Tab.cpp Machine + Material: Linking Wiki update (#11548)

* Fix tooltip + URL

* Full Material wiki redirection maping

* Machine wiki + append_option_line wiki linking

* Machine wiki 2

* Update README with improved wiki links and clarity

* Bring back Print statistics options

* Move num_extruders config to OtherSlicingStatesConfigDef

The num_extruders configuration option was relocated from OtherPresetsConfigDef to OtherSlicingStatesConfigDef for better organization and relevance. This change ensures that the number of extruders is defined in the context of slicing states rather than presets.

* Unifi adaptative bed mesh
This commit is contained in:
Ian Bassi
2025-12-09 12:57:03 -03:00
committed by GitHub
parent bb537f97f2
commit 25bc45c8f5
5 changed files with 185 additions and 176 deletions

View File

@@ -52,11 +52,11 @@ If you come across any of these in search results, please <b>report them</b> as
Use varied infill [patterns](https://github.com/OrcaSlicer/OrcaSlicer/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity. Use varied infill [patterns](https://github.com/OrcaSlicer/OrcaSlicer/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity.
- **[Overhang](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/OrcaSlicer/OrcaSlicer/wiki#support-settings)** - **[Overhang](https://github.com/OrcaSlicer/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/OrcaSlicer/OrcaSlicer/wiki#support-settings)**
Modify geometry for printable overhangs with precise support placement. Modify geometry for printable overhangs with precise support placement.
- **[Granular Controls](https://github.com/OrcaSlicer/OrcaSlicer/wiki#process-settings) and Customization** - **[Granular Controls](https://github.com/OrcaSlicer/OrcaSlicer/wiki#process-settings and Customization)**
Fine-tune print speed, layer height, pressure, and temperature with precision. Fine-tune print speed, layer height, pressure, and temperature with precision.
- **Network Printer Support** - **Network Printer Support**
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control. Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
- **[Mouse Ear Brims](https://github.com/OrcaSlicer/OrcaSlicer/wiki/others_settings_brim) & Adaptive Bed Mesh** - **[Mouse Ear Brims](https://github.com/OrcaSlicer/OrcaSlicer/wiki/others_settings_brim) & [Adaptive Bed Mesh](https://github.com/OrcaSlicer/OrcaSlicer/wiki/printer_basic_information_adaptive_bed_mesh)**
Automatic brims and adaptive mesh calibration ensure consistent adhesion. Automatic brims and adaptive mesh calibration ensure consistent adhesion.
- **User-Friendly Interface** - **User-Friendly Interface**
Intuitive drag-and-drop design with pre-made profiles for popular printers. Intuitive drag-and-drop design with pre-made profiles for popular printers.
@@ -68,9 +68,7 @@ If you come across any of these in search results, please <b>report them</b> as
# Wiki # Wiki
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer. The [wiki](https://github.com/OrcaSlicer/OrcaSlicer/wiki) aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
- **[Access the wiki here](https://github.com/OrcaSlicer/OrcaSlicer/wiki)** - **[Access the wiki here](https://github.com/OrcaSlicer/OrcaSlicer/wiki)**
- **[Contribute to the wiki](https://github.com/OrcaSlicer/OrcaSlicer/wiki/How-to-wiki)** - **[Contribute to the wiki](https://github.com/OrcaSlicer/OrcaSlicer/wiki/How-to-wiki)**

View File

@@ -10094,6 +10094,10 @@ OtherSlicingStatesConfigDef::OtherSlicingStatesConfigDef()
def->label = L("Is extruder used?"); def->label = L("Is extruder used?");
def->tooltip = L("Vector of booleans stating whether a given extruder is used in the print."); def->tooltip = L("Vector of booleans stating whether a given extruder is used in the print.");
def = this->add("num_extruders", coInt);
def->label = L("Number of extruders");
def->tooltip = L("Total number of extruders, regardless of whether they are used in the current print.");
// Options from PS not used in Orca // Options from PS not used in Orca
// def = this->add("initial_filament_type", coString); // def = this->add("initial_filament_type", coString);
// def->label = L("Initial filament type"); // def->label = L("Initial filament type");
@@ -10135,22 +10139,21 @@ PrintStatisticsConfigDef::PrintStatisticsConfigDef()
def->label = L("Total layer count"); def->label = L("Total layer count");
def->tooltip = L("Number of layers in the entire print."); def->tooltip = L("Number of layers in the entire print.");
// Options from PS not used in Orca def = this->add("normal_print_time", coString);
/* def = this->add("normal_print_time", coString);
def->label = L("Print time (normal mode)"); def->label = L("Print time (normal mode)");
def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as print_time."); def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as print_time.");
def = this->add("num_printing_extruders", coInt); //def = this->add("num_printing_extruders", coInt);
def->label = L("Number of printing extruders"); //def->label = L("Number of printing extruders");
def->tooltip = L("Number of extruders used during the print."); //def->tooltip = L("Number of extruders used during the print.");
def = this->add("print_time", coString); def = this->add("print_time", coString);
def->label = L("Print time (normal mode)"); def->label = L("Print time (normal mode)");
def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as normal_print_time."); def->tooltip = L("Estimated print time when printed in normal mode (i.e. not in silent mode). Same as normal_print_time.");
def = this->add("printing_filament_types", coString); //def = this->add("printing_filament_types", coString);
def->label = L("Used filament types"); //def->label = L("Used filament types");
def->tooltip = L("Comma-separated list of all filament types used during the print."); //def->tooltip = L("Comma-separated list of all filament types used during the print.");
def = this->add("silent_print_time", coString); def = this->add("silent_print_time", coString);
def->label = L("Print time (silent mode)"); def->label = L("Print time (silent mode)");
@@ -10174,7 +10177,7 @@ PrintStatisticsConfigDef::PrintStatisticsConfigDef()
def = this->add("used_filament", coFloat); def = this->add("used_filament", coFloat);
def->label = L("Used filament"); def->label = L("Used filament");
def->tooltip = L("Total length of filament used in the print.");*/ def->tooltip = L("Total length of filament used in the print.");
} }
ObjectsInfoConfigDef::ObjectsInfoConfigDef() ObjectsInfoConfigDef::ObjectsInfoConfigDef()
@@ -10304,10 +10307,6 @@ OtherPresetsConfigDef::OtherPresetsConfigDef()
def = this->add("physical_printer_preset", coString); def = this->add("physical_printer_preset", coString);
def->label = L("Physical printer name"); def->label = L("Physical printer name");
def->tooltip = L("Name of the physical printer used for slicing."); def->tooltip = L("Name of the physical printer used for slicing.");
def = this->add("num_extruders", coInt);
def->label = L("Number of extruders");
def->tooltip = L("Total number of extruders, regardless of whether they are used in the current print.");
} }

View File

@@ -931,7 +931,7 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_text(wxDC &dc, wxPoint pos, const wxString
} else { } else {
pos.y = pos.y + lround((height - size.y) / 2); pos.y = pos.y + lround((height - size.y) / 2);
} }
if (width > 0) if (width > 0 && is_main)
rect_label = wxRect(pos, wxSize(size.x, size.y)); rect_label = wxRect(pos, wxSize(size.x, size.y));
wxColour old_clr = dc.GetTextForeground(); wxColour old_clr = dc.GetTextForeground();

View File

@@ -2406,7 +2406,7 @@ void TabPrint::build()
page = add_options_page(L("Strength"), "custom-gcode_strength"); // ORCA: icon only visible on placeholders page = add_options_page(L("Strength"), "custom-gcode_strength"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Walls"), L"param_wall"); optgroup = page->new_optgroup(L("Walls"), L"param_wall");
optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loops"); optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loops");
optgroup->append_single_option_line("alternate_extra_wall", "strength_settings_walls#alternate-extra-wall"); optgroup->append_single_option_line("alternate_extra_wall", "strength_settings_walls#alternate-extra-wall");
optgroup->append_single_option_line("detect_thin_wall", "strength_settings_walls#detect-thin-wall"); optgroup->append_single_option_line("detect_thin_wall", "strength_settings_walls#detect-thin-wall");
@@ -2461,7 +2461,7 @@ void TabPrint::build()
page = add_options_page(L("Speed"), "custom-gcode_speed"); // ORCA: icon only visible on placeholders page = add_options_page(L("Speed"), "custom-gcode_speed"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Initial layer speed"), L"param_speed_first", 15); optgroup = page->new_optgroup(L("Initial layer speed"), L"param_speed_first", 15);
optgroup->append_single_option_line("initial_layer_speed", "speed_settings_initial_layer_speed#initial-layer"); optgroup->append_single_option_line("initial_layer_speed", "speed_settings_initial_layer_speed#initial-layer");
optgroup->append_single_option_line("initial_layer_infill_speed", "speed_settings_initial_layer_speed#initial-layer-infill"); optgroup->append_single_option_line("initial_layer_infill_speed", "speed_settings_initial_layer_speed#initial-layer-infill");
optgroup->append_single_option_line("initial_layer_travel_speed", "speed_settings_initial_layer_speed#initial-layer-travel-speed"); optgroup->append_single_option_line("initial_layer_travel_speed", "speed_settings_initial_layer_speed#initial-layer-travel-speed");
optgroup->append_single_option_line("slow_down_layers", "speed_settings_initial_layer_speed#number-of-slow-layers"); optgroup->append_single_option_line("slow_down_layers", "speed_settings_initial_layer_speed#number-of-slow-layers");
@@ -2527,7 +2527,7 @@ void TabPrint::build()
page = add_options_page(L("Support"), "custom-gcode_support"); // ORCA: icon only visible on placeholders page = add_options_page(L("Support"), "custom-gcode_support"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Support"), L"param_support"); optgroup = page->new_optgroup(L("Support"), L"param_support");
optgroup->append_single_option_line("enable_support", "support_settings_support"); optgroup->append_single_option_line("enable_support", "support_settings_support");
optgroup->append_single_option_line("support_type", "support_settings_support#type"); optgroup->append_single_option_line("support_type", "support_settings_support#type");
optgroup->append_single_option_line("support_style", "support_settings_support#style"); optgroup->append_single_option_line("support_style", "support_settings_support#style");
optgroup->append_single_option_line("support_threshold_angle", "support_settings_support#threshold-angle"); optgroup->append_single_option_line("support_threshold_angle", "support_settings_support#threshold-angle");
@@ -2641,9 +2641,9 @@ void TabPrint::build()
optgroup->append_single_option_line("interlocking_depth", "multimaterial_settings_advanced#interlocking-depth"); optgroup->append_single_option_line("interlocking_depth", "multimaterial_settings_advanced#interlocking-depth");
optgroup->append_single_option_line("interlocking_boundary_avoidance", "multimaterial_settings_advanced#interlocking-boundary-avoidance"); optgroup->append_single_option_line("interlocking_boundary_avoidance", "multimaterial_settings_advanced#interlocking-boundary-avoidance");
page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); optgroup = page->new_optgroup(L("Skirt"), L"param_skirt");
optgroup->append_single_option_line("skirt_loops", "others_settings_skirt#loops"); optgroup->append_single_option_line("skirt_loops", "others_settings_skirt#loops");
optgroup->append_single_option_line("skirt_type", "others_settings_skirt#type"); optgroup->append_single_option_line("skirt_type", "others_settings_skirt#type");
optgroup->append_single_option_line("min_skirt_length", "others_settings_skirt#minimum-extrusion-length"); optgroup->append_single_option_line("min_skirt_length", "others_settings_skirt#minimum-extrusion-length");
optgroup->append_single_option_line("skirt_distance", "others_settings_skirt#distance"); optgroup->append_single_option_line("skirt_distance", "others_settings_skirt#distance");
@@ -3821,26 +3821,26 @@ void TabFilament::build()
auto page = add_options_page(L("Filament"), "custom-gcode_filament"); // ORCA: icon only visible on placeholders auto page = add_options_page(L("Filament"), "custom-gcode_filament"); // ORCA: icon only visible on placeholders
//BBS //BBS
auto optgroup = page->new_optgroup(L("Basic information"), L"param_information"); auto optgroup = page->new_optgroup(L("Basic information"), L"param_information");
optgroup->append_single_option_line("filament_type"); // ORCA use same width with other elements optgroup->append_single_option_line("filament_type", "material_basic_information#type"); // ORCA use same width with other elements
optgroup->append_single_option_line("filament_vendor"); optgroup->append_single_option_line("filament_vendor", "material_basic_information#vendor");
optgroup->append_single_option_line("filament_soluble"); optgroup->append_single_option_line("filament_soluble", "material_basic_information#soluble-material");
// BBS // BBS
optgroup->append_single_option_line("filament_is_support"); optgroup->append_single_option_line("filament_is_support", "material_basic_information#support-material");
optgroup->append_single_option_line("filament_change_length"); optgroup->append_single_option_line("filament_change_length", "material_basic_information#filament-ramming-length");
//optgroup->append_single_option_line("filament_colour"); //optgroup->append_single_option_line("filament_colour");
optgroup->append_single_option_line("required_nozzle_HRC"); optgroup->append_single_option_line("required_nozzle_HRC", "material_basic_information#required-nozzle-hrc");
optgroup->append_single_option_line("default_filament_colour"); optgroup->append_single_option_line("default_filament_colour", "material_basic_information#default-color");
optgroup->append_single_option_line("filament_diameter"); optgroup->append_single_option_line("filament_diameter", "material_basic_information#diameter");
optgroup->append_single_option_line("filament_adhesiveness_category"); optgroup->append_single_option_line("filament_adhesiveness_category", "material_basic_information#adhesiveness-category");
optgroup->append_single_option_line("filament_density"); optgroup->append_single_option_line("filament_density", "material_basic_information#density");
optgroup->append_single_option_line("filament_shrink"); optgroup->append_single_option_line("filament_shrink", "material_basic_information#shrinkage-xy");
optgroup->append_single_option_line("filament_shrinkage_compensation_z"); optgroup->append_single_option_line("filament_shrinkage_compensation_z", "material_basic_information#shrinkage-z");
optgroup->append_single_option_line("filament_cost"); optgroup->append_single_option_line("filament_cost", "material_basic_information#price");
//BBS //BBS
optgroup->append_single_option_line("temperature_vitrification"); optgroup->append_single_option_line("temperature_vitrification", "material_basic_information#softening-temperature");
optgroup->append_single_option_line("idle_temperature"); optgroup->append_single_option_line("idle_temperature", "material_basic_information#idle-temperature");
Line line = { L("Recommended nozzle temperature"), L("Recommended nozzle temperature range of this filament. 0 means no set") }; Line line = { L("Recommended nozzle temperature"), L("Recommended nozzle temperature range of this filament. 0 means no set") };
line.append_option(optgroup->get_option("nozzle_temperature_range_low")); line.append_option(optgroup->get_option("nozzle_temperature_range_low"));
line.append_option(optgroup->get_option("nozzle_temperature_range_high")); line.append_option(optgroup->get_option("nozzle_temperature_range_high"));
@@ -3858,16 +3858,16 @@ void TabFilament::build()
// Orca: New section to focus on flow rate and PA to declutter general section // Orca: New section to focus on flow rate and PA to declutter general section
optgroup = page->new_optgroup(L("Flow ratio and Pressure Advance"), L"param_flow_ratio_and_pressure_advance"); optgroup = page->new_optgroup(L("Flow ratio and Pressure Advance"), L"param_flow_ratio_and_pressure_advance");
optgroup->append_single_option_line("pellet_flow_coefficient", "pellet-flow-coefficient"); optgroup->append_single_option_line("pellet_flow_coefficient", "printer_basic_information_advanced#pellet-modded-printer");
optgroup->append_single_option_line("filament_flow_ratio", "", 0); optgroup->append_single_option_line("filament_flow_ratio", "material_flow_ratio_and_pressure_advance#flow-ratio", 0);
optgroup->append_single_option_line("enable_pressure_advance", "pressure-advance-calib"); optgroup->append_single_option_line("enable_pressure_advance", "material_flow_ratio_and_pressure_advance#pressure-advance");
optgroup->append_single_option_line("pressure_advance", "pressure-advance-calib"); optgroup->append_single_option_line("pressure_advance", "material_flow_ratio_and_pressure_advance#pressure-advance");
// Orca: adaptive pressure advance and calibration model // Orca: adaptive pressure advance and calibration model
optgroup->append_single_option_line("adaptive_pressure_advance", "adaptive-pressure-advance-calib"); optgroup->append_single_option_line("adaptive_pressure_advance", "material_flow_ratio_and_pressure_advance#enable-adaptive-pressure-advance-beta");
optgroup->append_single_option_line("adaptive_pressure_advance_overhangs", "adaptive-pressure-advance-calib"); optgroup->append_single_option_line("adaptive_pressure_advance_overhangs", "material_flow_ratio_and_pressure_advance##enable-adaptive-pressure-advance-for-overhangs-beta");
optgroup->append_single_option_line("adaptive_pressure_advance_bridges", "adaptive-pressure-advance-calib"); optgroup->append_single_option_line("adaptive_pressure_advance_bridges", "material_flow_ratio_and_pressure_advance#pressure-advance-for-bridges");
Option option = optgroup->get_option("adaptive_pressure_advance_model"); Option option = optgroup->get_option("adaptive_pressure_advance_model");
option.opt.full_width = true; option.opt.full_width = true;
@@ -3877,11 +3877,12 @@ void TabFilament::build()
// //
optgroup = page->new_optgroup(L("Print chamber temperature"), L"param_chamber_temp"); optgroup = page->new_optgroup(L("Print chamber temperature"), L"param_chamber_temp");
optgroup->append_single_option_line("chamber_temperature", "chamber-temperature"); optgroup->append_single_option_line("chamber_temperature", "material_temperatures#print-chamber-temperature");
optgroup->append_single_option_line("activate_chamber_temp_control", "chamber-temperature"); optgroup->append_single_option_line("activate_chamber_temp_control", "material_temperatures#print-chamber-temperature");
optgroup = page->new_optgroup(L("Print temperature"), L"param_extruder_temp"); optgroup = page->new_optgroup(L("Print temperature"), L"param_extruder_temp");
line = { L("Nozzle"), L("Nozzle temperature when printing") }; line = { L("Nozzle"), L("Nozzle temperature when printing") };
line.label_path = "material_temperatures#nozzle";
line.append_option(optgroup->get_option("nozzle_temperature_initial_layer")); line.append_option(optgroup->get_option("nozzle_temperature_initial_layer"));
line.append_option(optgroup->get_option("nozzle_temperature")); line.append_option(optgroup->get_option("nozzle_temperature"));
optgroup->append_line(line); optgroup->append_line(line);
@@ -3889,36 +3890,42 @@ void TabFilament::build()
optgroup = page->new_optgroup(L("Bed temperature"), L"param_bed_temp"); optgroup = page->new_optgroup(L("Bed temperature"), L"param_bed_temp");
line = { L("Cool Plate (SuperTack)"), line = { L("Cool Plate (SuperTack)"),
L("Bed temperature when the Cool Plate SuperTack is installed. A value of 0 means the filament does not support printing on the Cool Plate SuperTack.") }; L("Bed temperature when the Cool Plate SuperTack is installed. A value of 0 means the filament does not support printing on the Cool Plate SuperTack.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("supertack_plate_temp_initial_layer")); line.append_option(optgroup->get_option("supertack_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("supertack_plate_temp")); line.append_option(optgroup->get_option("supertack_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Cool Plate"), line = { L("Cool Plate"),
L("Bed temperature when the Cool Plate is installed. A value of 0 means the filament does not support printing on the Cool Plate.") }; L("Bed temperature when the Cool Plate is installed. A value of 0 means the filament does not support printing on the Cool Plate.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("cool_plate_temp_initial_layer")); line.append_option(optgroup->get_option("cool_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("cool_plate_temp")); line.append_option(optgroup->get_option("cool_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Textured Cool Plate"), line = { L("Textured Cool Plate"),
L("Bed temperature when the Textured Cool Plate is installed. A value of 0 means the filament does not support printing on the Textured Cool Plate.") }; L("Bed temperature when the Textured Cool Plate is installed. A value of 0 means the filament does not support printing on the Textured Cool Plate.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("textured_cool_plate_temp_initial_layer")); line.append_option(optgroup->get_option("textured_cool_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("textured_cool_plate_temp")); line.append_option(optgroup->get_option("textured_cool_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Engineering Plate"), line = { L("Engineering Plate"),
L("Bed temperature when the Engineering Plate is installed. A value of 0 means the filament does not support printing on the Engineering Plate.") }; L("Bed temperature when the Engineering Plate is installed. A value of 0 means the filament does not support printing on the Engineering Plate.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("eng_plate_temp_initial_layer")); line.append_option(optgroup->get_option("eng_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("eng_plate_temp")); line.append_option(optgroup->get_option("eng_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Smooth PEI Plate / High Temp Plate"), line = { L("Smooth PEI Plate / High Temp Plate"),
L("Bed temperature when the Smooth PEI Plate/High Temperature Plate is installed. A value of 0 means the filament does not support printing on the Smooth PEI Plate/High Temp Plate.") }; L("Bed temperature when the Smooth PEI Plate/High Temperature Plate is installed. A value of 0 means the filament does not support printing on the Smooth PEI Plate/High Temp Plate.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("hot_plate_temp_initial_layer")); line.append_option(optgroup->get_option("hot_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("hot_plate_temp")); line.append_option(optgroup->get_option("hot_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Textured PEI Plate"), line = { L("Textured PEI Plate"),
L("Bed temperature when the Textured PEI Plate is installed. A value of 0 means the filament does not support printing on the Textured PEI Plate.") }; L("Bed temperature when the Textured PEI Plate is installed. A value of 0 means the filament does not support printing on the Textured PEI Plate.") };
line.label_path = "material_temperatures#bed";
line.append_option(optgroup->get_option("textured_plate_temp_initial_layer")); line.append_option(optgroup->get_option("textured_plate_temp_initial_layer"));
line.append_option(optgroup->get_option("textured_plate_temp")); line.append_option(optgroup->get_option("textured_plate_temp"));
optgroup->append_line(line); optgroup->append_line(line);
@@ -3955,8 +3962,8 @@ void TabFilament::build()
//BBS //BBS
optgroup = page->new_optgroup(L("Volumetric speed limitation"), L"param_volumetric_speed"); optgroup = page->new_optgroup(L("Volumetric speed limitation"), L"param_volumetric_speed");
optgroup->append_single_option_line("filament_adaptive_volumetric_speed", "", 0); optgroup->append_single_option_line("filament_adaptive_volumetric_speed", "material_volumetric_speed_limitation#adaptive-volumetric-speed", 0);
optgroup->append_single_option_line("filament_max_volumetric_speed"); optgroup->append_single_option_line("filament_max_volumetric_speed", "material_volumetric_speed_limitation#max-volumetric-speed");
//line = { "", "" }; //line = { "", "" };
//line.full_width = 1; //line.full_width = 1;
@@ -3974,46 +3981,48 @@ void TabFilament::build()
//}; //};
//optgroup->append_line(line); //optgroup->append_line(line);
optgroup = page->new_optgroup(L("Cooling for specific layer"), L"param_cooling_specific_layer"); optgroup = page->new_optgroup(L("Cooling for specific layer"), L"param_cooling_specific_layer");
optgroup->append_single_option_line("close_fan_the_first_x_layers"); optgroup->append_single_option_line("close_fan_the_first_x_layers", "material_cooling#no-cooling-for-the-first");
optgroup->append_single_option_line("full_fan_speed_layer"); optgroup->append_single_option_line("full_fan_speed_layer", "material_cooling#full-fan-speed-at-layer");
optgroup = page->new_optgroup(L("Part cooling fan"), L"param_cooling_part_fan"); optgroup = page->new_optgroup(L("Part cooling fan"), L"param_cooling_part_fan");
line = { L("Min fan speed threshold"), L("Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time") }; line = { L("Min fan speed threshold"), L("Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time") };
line.label_path = "auto-cooling"; line.label_path = "material_cooling#material-part-cooling-fan";
line.append_option(optgroup->get_option("fan_min_speed")); line.append_option(optgroup->get_option("fan_min_speed"));
line.append_option(optgroup->get_option("fan_cooling_layer_time")); line.append_option(optgroup->get_option("fan_cooling_layer_time"));
optgroup->append_line(line); optgroup->append_line(line);
line = { L("Max fan speed threshold"), L("Part cooling fan speed will be max when the estimated layer time is shorter than the setting value") }; line = { L("Max fan speed threshold"), L("Part cooling fan speed will be max when the estimated layer time is shorter than the setting value") };
line.label_path = "auto-cooling"; line.label_path = "material_cooling#material-part-cooling-fan";
line.append_option(optgroup->get_option("fan_max_speed")); line.append_option(optgroup->get_option("fan_max_speed"));
line.append_option(optgroup->get_option("slow_down_layer_time")); line.append_option(optgroup->get_option("slow_down_layer_time"));
optgroup->append_line(line); optgroup->append_line(line);
optgroup->append_single_option_line("reduce_fan_stop_start_freq"); optgroup->append_single_option_line("reduce_fan_stop_start_freq", "material_cooling#keep-fan-always-on");
optgroup->append_single_option_line("slow_down_for_layer_cooling"); optgroup->append_single_option_line("slow_down_for_layer_cooling", "material_cooling#slow-printing-down-for-better-layer-cooling");
optgroup->append_single_option_line("dont_slow_down_outer_wall"); optgroup->append_single_option_line("dont_slow_down_outer_wall", "material_cooling#dont-slow-down-outer-walls");
optgroup->append_single_option_line("slow_down_min_speed"); optgroup->append_single_option_line("slow_down_min_speed", "material_cooling#min-print-speed");
optgroup->append_single_option_line("enable_overhang_bridge_fan"); optgroup->append_single_option_line("enable_overhang_bridge_fan", "material_cooling#force-cooling-for-overhangs-and-bridges");
optgroup->append_single_option_line("overhang_fan_threshold"); optgroup->append_single_option_line("overhang_fan_threshold", "material_cooling#overhang-cooling-activation-threshold");
optgroup->append_single_option_line("overhang_fan_speed"); optgroup->append_single_option_line("overhang_fan_speed", "material_cooling#overhangs-and-external-bridges-fan-speed");
optgroup->append_single_option_line("internal_bridge_fan_speed"); // ORCA: Add support for separate internal bridge fan speed control optgroup->append_single_option_line("internal_bridge_fan_speed", "material_cooling#internal-bridges-fan-speed"); // ORCA: Add support for separate internal bridge fan speed control
optgroup->append_single_option_line("support_material_interface_fan_speed"); optgroup->append_single_option_line("support_material_interface_fan_speed", "material_cooling#support-interface-fan-speed");
optgroup->append_single_option_line("ironing_fan_speed"); // ORCA: Add support for ironing fan speed control optgroup->append_single_option_line("ironing_fan_speed", "material_cooling#ironing-fan-speed"); // ORCA: Add support for ironing fan speed control
optgroup = page->new_optgroup(L("Auxiliary part cooling fan"), L"param_cooling_aux_fan"); optgroup = page->new_optgroup(L("Auxiliary part cooling fan"), L"param_cooling_aux_fan");
optgroup->append_single_option_line("additional_cooling_fan_speed", "auxiliary-fan"); optgroup->append_single_option_line("additional_cooling_fan_speed", "material_cooling#auxiliary-part-cooling-fan");
optgroup = page->new_optgroup(L("Exhaust fan"),L"param_cooling_exhaust"); optgroup = page->new_optgroup(L("Exhaust fan"),L"param_cooling_exhaust");
optgroup->append_single_option_line("activate_air_filtration", "air-filtration"); optgroup->append_single_option_line("activate_air_filtration", "material_cooling#activate-air-filtration");
line = {L("During print"), ""}; line = {L("During print"), ""};
line.append_option(optgroup->get_option("during_print_exhaust_fan_speed")); line.append_option(optgroup->get_option("during_print_exhaust_fan_speed"));
line.label_path = "material_cooling#during-print";
optgroup->append_line(line); optgroup->append_line(line);
line = {L("Complete print"), ""}; line = {L("Complete print"), ""};
line.append_option(optgroup->get_option("complete_print_exhaust_fan_speed")); line.append_option(optgroup->get_option("complete_print_exhaust_fan_speed"));
line.label_path = "material_cooling#complete-print";
optgroup->append_line(line); optgroup->append_line(line);
//BBS //BBS
add_filament_overrides_page(); add_filament_overrides_page();
@@ -4047,26 +4056,26 @@ void TabFilament::build()
page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Wipe tower parameters"), "param_tower"); optgroup = page->new_optgroup(L("Wipe tower parameters"), "param_tower");
optgroup->append_single_option_line("filament_minimal_purge_on_wipe_tower"); optgroup->append_single_option_line("filament_minimal_purge_on_wipe_tower", "material_multimaterial#multimaterial-wipe-tower-parameters");
optgroup = page->new_optgroup(L("Multi Filament")); optgroup = page->new_optgroup(L("Multi Filament"));
// optgroup->append_single_option_line("filament_flush_temp", "", 0); // optgroup->append_single_option_line("filament_flush_temp", "", 0);
// optgroup->append_single_option_line("filament_flush_volumetric_speed", "", 0); // optgroup->append_single_option_line("filament_flush_volumetric_speed", "", 0);
optgroup->append_single_option_line("long_retractions_when_ec", "" , 0); optgroup->append_single_option_line("long_retractions_when_ec", "material_multimaterial#multi-filament" , 0);
optgroup->append_single_option_line("retraction_distances_when_ec", "" , 0); optgroup->append_single_option_line("retraction_distances_when_ec", "material_multimaterial#multi-filament" , 0);
optgroup = page->new_optgroup(L("Tool change parameters with single extruder MM printers"), "param_toolchange"); optgroup = page->new_optgroup(L("Tool change parameters with single extruder MM printers"), "param_toolchange");
optgroup->append_single_option_line("filament_loading_speed_start", "semm"); optgroup->append_single_option_line("filament_loading_speed_start", "material_multimaterial#loading-speed-at-the-start");
optgroup->append_single_option_line("filament_loading_speed", "semm"); optgroup->append_single_option_line("filament_loading_speed", "material_multimaterial#loading-speed");
optgroup->append_single_option_line("filament_unloading_speed_start", "semm"); optgroup->append_single_option_line("filament_unloading_speed_start", "material_multimaterial#unloading-speed-at-the-start");
optgroup->append_single_option_line("filament_unloading_speed", "semm"); optgroup->append_single_option_line("filament_unloading_speed", "material_multimaterial#unloading-speed");
optgroup->append_single_option_line("filament_toolchange_delay", "semm"); optgroup->append_single_option_line("filament_toolchange_delay", "material_multimaterial#delay-after-unloading");
optgroup->append_single_option_line("filament_cooling_moves", "semm"); optgroup->append_single_option_line("filament_cooling_moves", "material_multimaterial#number-of-cooling-moves");
optgroup->append_single_option_line("filament_cooling_initial_speed", "semm"); optgroup->append_single_option_line("filament_cooling_initial_speed", "material_multimaterial#speed-of-the-first-cooling-move");
optgroup->append_single_option_line("filament_cooling_final_speed", "semm"); optgroup->append_single_option_line("filament_cooling_final_speed", "material_multimaterial#speed-of-the-last-cooling-move");
optgroup->append_single_option_line("filament_stamping_loading_speed"); optgroup->append_single_option_line("filament_stamping_loading_speed", "material_multimaterial#stamping-loading-speed");
optgroup->append_single_option_line("filament_stamping_distance"); optgroup->append_single_option_line("filament_stamping_distance", "material_multimaterial#stamping-distance");
create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "", [this](wxWindow* parent) { create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "material_multimaterial#ramming-parameters", [this](wxWindow* parent) {
// ORCA modernize button style // ORCA modernize button style
Button* btn = new Button(parent, _(L("Set")) + " " + dots); Button* btn = new Button(parent, _(L("Set")) + " " + dots);
@@ -4086,9 +4095,9 @@ void TabFilament::build()
}); });
optgroup = page->new_optgroup(L("Tool change parameters with multi extruder MM printers"), "param_toolchange_multi_extruder"); optgroup = page->new_optgroup(L("Tool change parameters with multi extruder MM printers"), "param_toolchange_multi_extruder");
optgroup->append_single_option_line("filament_multitool_ramming"); optgroup->append_single_option_line("filament_multitool_ramming", "material_multimaterial#tool-change-parameters-with-multi-extruder");
optgroup->append_single_option_line("filament_multitool_ramming_volume"); optgroup->append_single_option_line("filament_multitool_ramming_volume", "material_multimaterial#multi-tool-ramming-volume");
optgroup->append_single_option_line("filament_multitool_ramming_flow"); optgroup->append_single_option_line("filament_multitool_ramming_flow", "material_multimaterial#multi-tool-ramming-flow");
page = add_options_page(L("Dependencies"), "advanced"); page = add_options_page(L("Dependencies"), "advanced");
optgroup = page->new_optgroup(L("Compatible printers"), "param_dependencies_printers"); optgroup = page->new_optgroup(L("Compatible printers"), "param_dependencies_printers");
@@ -4098,7 +4107,7 @@ void TabFilament::build()
option = optgroup->get_option("compatible_printers_condition"); option = optgroup->get_option("compatible_printers_condition");
option.opt.full_width = true; option.opt.full_width = true;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "material_dependencies#compatible-printers");
optgroup = page->new_optgroup(L("Compatible process profiles"), "param_dependencies_presets"); optgroup = page->new_optgroup(L("Compatible process profiles"), "param_dependencies_presets");
create_line_with_widget(optgroup.get(), "compatible_prints", "", [this](wxWindow* parent) { create_line_with_widget(optgroup.get(), "compatible_prints", "", [this](wxWindow* parent) {
@@ -4107,7 +4116,7 @@ void TabFilament::build()
option = optgroup->get_option("compatible_prints_condition"); option = optgroup->get_option("compatible_prints_condition");
option.opt.full_width = true; option.opt.full_width = true;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "material_dependencies#compatible-process-profiles");
page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Notes"),"note", 0); optgroup = page->new_optgroup(L("Notes"),"note", 0);
@@ -4341,28 +4350,28 @@ void TabPrinter::build_fff()
}); });
Option option = optgroup->get_option("bed_exclude_area"); Option option = optgroup->get_option("bed_exclude_area");
option.opt.full_width = true; option.opt.full_width = true;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_basic_information_printable_space#excluded-bed-area");
// optgroup->append_single_option_line("printable_area"); // optgroup->append_single_option_line("printable_area");
optgroup->append_single_option_line("printable_height"); optgroup->append_single_option_line("printable_height", "printer_basic_information_printable_space#printable-height");
optgroup->append_single_option_line("support_multi_bed_types","bed-types"); optgroup->append_single_option_line("support_multi_bed_types","printer_basic_information_printable_space#support-multi-bed-types");
optgroup->append_single_option_line("best_object_pos"); optgroup->append_single_option_line("best_object_pos", "printer_basic_information_printable_space#best-object-position");
// todo: for multi_extruder test // todo: for multi_extruder test
optgroup->append_single_option_line("z_offset"); optgroup->append_single_option_line("z_offset", "printer_basic_information_printable_space#z-offset");
optgroup->append_single_option_line("preferred_orientation"); optgroup->append_single_option_line("preferred_orientation", "printer_basic_information_printable_space#preferred-orientation");
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
optgroup->append_single_option_line("printer_structure"); optgroup->append_single_option_line("printer_structure", "printer_basic_information_advanced#printer-structure");
optgroup->append_single_option_line("gcode_flavor"); optgroup->append_single_option_line("gcode_flavor", "printer_basic_information_advanced#g-code-flavor");
optgroup->append_single_option_line("pellet_modded_printer", "pellet-flow-coefficient"); optgroup->append_single_option_line("pellet_modded_printer", "printer_basic_information_advanced#pellet-modded-printer");
optgroup->append_single_option_line("bbl_use_printhost"); optgroup->append_single_option_line("bbl_use_printhost", "printer_basic_information_advanced#use-3rd-party-print-host");
optgroup->append_single_option_line("scan_first_layer"); optgroup->append_single_option_line("scan_first_layer" , "printer_basic_information_advanced#scan-first-layer");
//option = optgroup->get_option("wrapping_exclude_area"); //option = optgroup->get_option("wrapping_exclude_area");
//option.opt.full_width = true; //option.opt.full_width = true;
//optgroup->append_single_option_line(option); //optgroup->append_single_option_line(option);
optgroup->append_single_option_line("disable_m73"); optgroup->append_single_option_line("disable_m73", "printer_basic_information_advanced#disable-set-remaining-print-time");
option = optgroup->get_option("thumbnails"); option = optgroup->get_option("thumbnails");
option.opt.full_width = true; option.opt.full_width = true;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_basic_information_advanced#g-code-thumbnails");
// optgroup->append_single_option_line("thumbnails_format"); // optgroup->append_single_option_line("thumbnails_format");
optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) { optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) {
wxTheApp->CallAfter([this, opt_key, value]() { wxTheApp->CallAfter([this, opt_key, value]() {
@@ -4400,36 +4409,37 @@ void TabPrinter::build_fff()
}); });
}; };
optgroup->append_single_option_line("use_relative_e_distances"); optgroup->append_single_option_line("use_relative_e_distances", "printer_basic_information_advanced#use-relative-e-distances");
optgroup->append_single_option_line("use_firmware_retraction"); optgroup->append_single_option_line("use_firmware_retraction", "printer_basic_information_advanced#use-firmware-retraction");
optgroup->append_single_option_line("bed_temperature_formula"); optgroup->append_single_option_line("bed_temperature_formula", "printer_basic_information_advanced#bed-temperature-type");
// optgroup->append_single_option_line("spaghetti_detector"); // optgroup->append_single_option_line("spaghetti_detector");
optgroup->append_single_option_line("time_cost"); optgroup->append_single_option_line("time_cost", "printer_basic_information_advanced#time-cost");
optgroup = page->new_optgroup(L("Cooling Fan"), "param_cooling_fan"); optgroup = page->new_optgroup(L("Cooling Fan"), "param_cooling_fan");
Line line = Line{ L("Fan speed-up time"), optgroup->get_option("fan_speedup_time").opt.tooltip }; Line line = Line{ L("Fan speed-up time"), optgroup->get_option("fan_speedup_time").opt.tooltip };
line.label_path = "printer_basic_information_cooling_fan#fan-speed-up-time";
line.append_option(optgroup->get_option("fan_speedup_time")); line.append_option(optgroup->get_option("fan_speedup_time"));
line.append_option(optgroup->get_option("fan_speedup_overhangs")); line.append_option(optgroup->get_option("fan_speedup_overhangs"));
optgroup->append_line(line); optgroup->append_line(line);
optgroup->append_single_option_line("fan_kickstart"); optgroup->append_single_option_line("fan_kickstart", "printer_basic_information_cooling_fan#fan-kick-start-time");
optgroup = page->new_optgroup(L("Extruder Clearance"), "param_extruder_clearance"); optgroup = page->new_optgroup(L("Extruder Clearance"), "param_extruder_clearance");
optgroup->append_single_option_line("extruder_clearance_radius"); optgroup->append_single_option_line("extruder_clearance_radius", "printer_basic_information_extruder_clearance#radius");
optgroup->append_single_option_line("extruder_clearance_height_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"); optgroup->append_single_option_line("extruder_clearance_height_to_lid", "printer_basic_information_extruder_clearance#height-to-lid");
optgroup = page->new_optgroup(L("Adaptive bed mesh"), "param_adaptive_mesh"); optgroup = page->new_optgroup(L("Adaptive bed mesh"), "param_adaptive_mesh");
optgroup->append_single_option_line("bed_mesh_min", "adaptive-bed-mesh"); optgroup->append_single_option_line("bed_mesh_min", "printer_basic_information_adaptive_bed_mesh#bed-mesh");
optgroup->append_single_option_line("bed_mesh_max", "adaptive-bed-mesh"); optgroup->append_single_option_line("bed_mesh_max", "printer_basic_information_adaptive_bed_mesh#bed-mesh");
optgroup->append_single_option_line("bed_mesh_probe_distance", "adaptive-bed-mesh"); optgroup->append_single_option_line("bed_mesh_probe_distance", "printer_basic_information_adaptive_bed_mesh#probe-point-distance");
optgroup->append_single_option_line("adaptive_bed_mesh_margin", "adaptive-bed-mesh"); optgroup->append_single_option_line("adaptive_bed_mesh_margin", "printer_basic_information_adaptive_bed_mesh#mesh-margin");
optgroup = page->new_optgroup(L("Accessory"), "param_accessory"); optgroup = page->new_optgroup(L("Accessory"), "param_accessory");
optgroup->append_single_option_line("nozzle_type"); optgroup->append_single_option_line("nozzle_type", "printer_basic_information_accessory#nozzle-type");
optgroup->append_single_option_line("nozzle_hrc"); optgroup->append_single_option_line("nozzle_hrc", "printer_basic_information_accessory#nozzle-hrc");
optgroup->append_single_option_line("auxiliary_fan", "auxiliary-fan"); optgroup->append_single_option_line("auxiliary_fan", "printer_basic_information_accessory#auxiliary-part-cooling-fan");
optgroup->append_single_option_line("support_chamber_temp_control", "chamber-temperature"); optgroup->append_single_option_line("support_chamber_temp_control", "printer_basic_information_accessory#support-controlling-chamber-temperature");
optgroup->append_single_option_line("support_air_filtration", "air-filtration"); optgroup->append_single_option_line("support_air_filtration", "printer_basic_information_accessory#support-air-filtration");
auto edit_custom_gcode_fn = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; auto edit_custom_gcode_fn = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); };
@@ -4445,7 +4455,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#machine-start-g-code");
optgroup = page->new_optgroup(L("Machine end G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Machine end G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4456,7 +4466,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#machine-end-g-code");
optgroup = page->new_optgroup(L("Printing by object G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Printing by object G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) { optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) {
@@ -4467,7 +4477,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height; // 150; option.opt.height = gcode_field_height; // 150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#printing-by-object-g-code");
optgroup = page->new_optgroup(L("Before layer change G-code"),"param_gcode", 0); optgroup = page->new_optgroup(L("Before layer change G-code"),"param_gcode", 0);
@@ -4479,7 +4489,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#before-layer-change-g-code");
optgroup = page->new_optgroup(L("Layer change G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Layer change G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4490,7 +4500,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#layer-change-g-code");
optgroup = page->new_optgroup(L("Timelapse G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Timelapse G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4501,7 +4511,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#timelapse-g-code");
optgroup = page->new_optgroup(L("Clumping Detection G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Clumping Detection G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) { optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) {
@@ -4512,7 +4522,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height; // 150; option.opt.height = gcode_field_height; // 150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#clumping-detection-g-code");
optgroup = page->new_optgroup(L("Change filament G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Change filament G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4523,7 +4533,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#change-filament-g-code");
optgroup = page->new_optgroup(L("Change extrusion role G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Change extrusion role G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key &opt_key, const boost::any &value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key &opt_key, const boost::any &value) {
@@ -4534,7 +4544,7 @@ void TabPrinter::build_fff()
option.opt.full_width = true; option.opt.full_width = true;
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#change-extrusion-role-g-code");
optgroup = page->new_optgroup(L("Pause G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Pause G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4544,7 +4554,7 @@ void TabPrinter::build_fff()
option = optgroup->get_option("machine_pause_gcode"); option = optgroup->get_option("machine_pause_gcode");
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#pause-g-code");
optgroup = page->new_optgroup(L("Template Custom G-code"), L"param_gcode", 0); optgroup = page->new_optgroup(L("Template Custom G-code"), L"param_gcode", 0);
optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) {
@@ -4554,7 +4564,7 @@ void TabPrinter::build_fff()
option = optgroup->get_option("template_custom_gcode"); option = optgroup->get_option("template_custom_gcode");
option.opt.is_code = true; option.opt.is_code = true;
option.opt.height = gcode_field_height;//150; option.opt.height = gcode_field_height;//150;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_machine_gcode#template-custom-g-code");
page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders
optgroup = page->new_optgroup(L("Notes"), "note", 0); optgroup = page->new_optgroup(L("Notes"), "note", 0);
@@ -4657,10 +4667,11 @@ void TabPrinter::extruders_count_changed(size_t extruders_count)
} }
} }
void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key) void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key, const std::string& label_path)
{ {
auto option = optgroup->get_option(opt_key, 0); auto option = optgroup->get_option(opt_key, 0);
auto line = Line{ option.opt.full_label, "" }; auto line = Line{ option.opt.full_label, "" };
line.label_path = label_path;
line.append_option(option); line.append_option(option);
if (m_use_silent_mode if (m_use_silent_mode
|| m_printer_technology == ptSLA // just for first build, if SLA printer preset is selected || m_printer_technology == ptSLA // just for first build, if SLA printer preset is selected
@@ -4697,14 +4708,15 @@ PageShp TabPrinter::build_kinematics_page()
optgroup->append_line(line); optgroup->append_line(line);
} }
auto optgroup = page->new_optgroup(L("Advanced"), "param_advanced"); auto optgroup = page->new_optgroup(L("Advanced"), "param_advanced");
optgroup->append_single_option_line("emit_machine_limits_to_gcode"); optgroup->append_single_option_line("emit_machine_limits_to_gcode", "printer_motion_ability#emit-limits-to-g-code");
// resonance avoidance ported over from qidi slicer // resonance avoidance ported over from qidi slicer
optgroup = page->new_optgroup(L("Resonance Avoidance"), "param_resonance_avoidance"); optgroup = page->new_optgroup(L("Resonance Avoidance"), "param_resonance_avoidance");
optgroup->append_single_option_line("resonance_avoidance"); optgroup->append_single_option_line("resonance_avoidance", "printer_motion_ability_resonance_avoidance#resonance-avoidance");
// Resonanceavoidance speed inputs // Resonanceavoidance speed inputs
{ {
Line resonance_line = {L("Resonance Avoidance Speed"), L""}; Line resonance_line = {L("Resonance Avoidance Speed"), L""};
resonance_line.label_path = "printer_motion_ability_resonance_avoidance#resonance-avoidance-speed";
resonance_line.append_option(optgroup->get_option("min_resonance_avoidance_speed")); resonance_line.append_option(optgroup->get_option("min_resonance_avoidance_speed"));
resonance_line.append_option(optgroup->get_option("max_resonance_avoidance_speed")); resonance_line.append_option(optgroup->get_option("max_resonance_avoidance_speed"));
optgroup->append_line(resonance_line); optgroup->append_line(resonance_line);
@@ -4718,23 +4730,23 @@ PageShp TabPrinter::build_kinematics_page()
}; };
optgroup = page->new_optgroup(L("Speed limitation"), "param_speed"); optgroup = page->new_optgroup(L("Speed limitation"), "param_speed");
for (const std::string &speed_axis : speed_axes) { for (const std::string &speed_axis : speed_axes) {
append_option_line(optgroup, speed_axis); append_option_line(optgroup, speed_axis, "printer_motion_ability#speed-limitation");
} }
const std::vector<std::string> axes{ "x", "y", "z", "e" }; const std::vector<std::string> axes{ "x", "y", "z", "e" };
optgroup = page->new_optgroup(L("Acceleration limitation"), "param_acceleration"); optgroup = page->new_optgroup(L("Acceleration limitation"), "param_acceleration");
for (const std::string &axis : axes) { for (const std::string &axis : axes) {
append_option_line(optgroup, "machine_max_acceleration_" + axis); append_option_line(optgroup, "machine_max_acceleration_" + axis, "printer_motion_ability#acceleration-limitation");
} }
append_option_line(optgroup, "machine_max_acceleration_extruding"); append_option_line(optgroup, "machine_max_acceleration_extruding", "printer_motion_ability#acceleration-limitation");
append_option_line(optgroup, "machine_max_acceleration_retracting"); append_option_line(optgroup, "machine_max_acceleration_retracting", "printer_motion_ability#acceleration-limitation");
append_option_line(optgroup, "machine_max_acceleration_travel"); append_option_line(optgroup, "machine_max_acceleration_travel", "printer_motion_ability#acceleration-limitation");
optgroup = page->new_optgroup(L("Jerk limitation"), "param_jerk"); optgroup = page->new_optgroup(L("Jerk limitation"), "param_jerk");
// machine max junction deviation // machine max junction deviation
append_option_line(optgroup, "machine_max_junction_deviation"); append_option_line(optgroup, "machine_max_junction_deviation", "printer_motion_ability#maximum-junction-deviation");
for (const std::string &axis : axes) { for (const std::string &axis : axes) {
append_option_line(optgroup, "machine_max_jerk_" + axis); append_option_line(optgroup, "machine_max_jerk_" + axis, "printer_motion_ability#maximum-jerk");
} }
//optgroup = page->new_optgroup(L("Minimum feedrates")); //optgroup = page->new_optgroup(L("Minimum feedrates"));
@@ -4789,7 +4801,7 @@ if (is_marlin_flavor)
// create a page, but pretend it's an extruder page, so we can add it to m_pages ourselves // create a page, but pretend it's an extruder page, so we can add it to m_pages ourselves
auto page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material", true); // ORCA: icon only visible on placeholders auto page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material", true); // ORCA: icon only visible on placeholders
auto optgroup = page->new_optgroup(L("Single extruder multi-material setup"), "param_multi_material"); auto optgroup = page->new_optgroup(L("Single extruder multi-material setup"), "param_multi_material");
optgroup->append_single_option_line("single_extruder_multi_material", "semm"); optgroup->append_single_option_line("single_extruder_multi_material", "printer_multimaterial_setup#single-extruder-multi-material");
ConfigOptionDef def; ConfigOptionDef def;
def.type = coInt, def.set_default_value(new ConfigOptionInt((int) m_extruders_count)); def.type = coInt, def.set_default_value(new ConfigOptionInt((int) m_extruders_count));
def.label = L("Extruders"); def.label = L("Extruders");
@@ -4798,7 +4810,7 @@ if (is_marlin_flavor)
def.max = MAXIMUM_EXTRUDER_NUMBER; def.max = MAXIMUM_EXTRUDER_NUMBER;
def.mode = comAdvanced; def.mode = comAdvanced;
Option option(def, "extruders_count"); Option option(def, "extruders_count");
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_multimaterial_setup#extruders");
// Orca: rebuild missed extruder pages // Orca: rebuild missed extruder pages
optgroup->m_on_change = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup)](t_config_option_key opt_key, boost::any value) { optgroup->m_on_change = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup)](t_config_option_key opt_key, boost::any value) {
@@ -4872,24 +4884,24 @@ if (is_marlin_flavor)
} }
}); });
}; };
optgroup->append_single_option_line("manual_filament_change", "semm#manual-filament-change"); optgroup->append_single_option_line("manual_filament_change", "printer_multimaterial_setup#manual-filament-change");
optgroup = page->new_optgroup(L("Wipe tower"), "param_tower"); optgroup = page->new_optgroup(L("Wipe tower"), "param_tower");
optgroup->append_single_option_line("purge_in_prime_tower", "semm"); optgroup->append_single_option_line("purge_in_prime_tower", "printer_multimaterial_wipe_tower#purge-in-prime-tower");
optgroup->append_single_option_line("enable_filament_ramming", "semm"); optgroup->append_single_option_line("enable_filament_ramming", "printer_multimaterial_wipe_tower#enable-filament-ramming");
optgroup = page->new_optgroup(L("Single extruder multi-material parameters"), "param_settings"); optgroup = page->new_optgroup(L("Single extruder multi-material parameters"), "param_settings");
optgroup->append_single_option_line("cooling_tube_retraction", "semm"); optgroup->append_single_option_line("cooling_tube_retraction", "printer_multimaterial_semm_parameters#cooling-tube-position");
optgroup->append_single_option_line("cooling_tube_length", "semm"); optgroup->append_single_option_line("cooling_tube_length", "printer_multimaterial_semm_parameters#cooling-tube-length");
optgroup->append_single_option_line("parking_pos_retraction", "semm"); optgroup->append_single_option_line("parking_pos_retraction", "printer_multimaterial_semm_parameters#filament-parking-positions");
optgroup->append_single_option_line("extra_loading_move", "semm"); optgroup->append_single_option_line("extra_loading_move", "printer_multimaterial_semm_parameters#extra-loading-distance");
optgroup->append_single_option_line("high_current_on_filament_swap", "semm"); optgroup->append_single_option_line("high_current_on_filament_swap", "printer_multimaterial_semm_parameters#high-extruder-current-on-filament-swap");
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
optgroup->append_single_option_line("machine_load_filament_time"); optgroup->append_single_option_line("machine_load_filament_time", "printer_multimaterial_advanced#filament-load-time");
optgroup->append_single_option_line("machine_unload_filament_time"); optgroup->append_single_option_line("machine_unload_filament_time", "printer_multimaterial_advanced#filament-unload-time");
optgroup->append_single_option_line("machine_tool_change_time"); optgroup->append_single_option_line("machine_tool_change_time", "printer_multimaterial_advanced#tool-change-time");
m_pages.insert(m_pages.end() - n_after_single_extruder_MM, page); m_pages.insert(m_pages.end() - n_after_single_extruder_MM, page);
} }
@@ -4903,14 +4915,14 @@ if (is_marlin_flavor)
m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page); m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page);
auto optgroup = page->new_optgroup(L("Basic information"), L"param_information", -1, true); auto optgroup = page->new_optgroup(L("Basic information"), L"param_information", -1, true);
optgroup->append_single_option_line("nozzle_diameter", "", extruder_idx); optgroup->append_single_option_line("nozzle_diameter", "printer_extruder_basic_information#nozzle-diameter", extruder_idx);
//optgroup->append_single_option_line("nozzle_volume_type", "", extruder_idx); //optgroup->append_single_option_line("nozzle_volume_type", "", extruder_idx);
optgroup->append_single_option_line("nozzle_volume", "", extruder_idx); optgroup->append_single_option_line("nozzle_volume", "printer_extruder_basic_information#nozzle-volume", extruder_idx);
optgroup->append_single_option_line("extruder_printable_height", "", extruder_idx); optgroup->append_single_option_line("extruder_printable_height", "printer_extruder_basic_information#extruder-layer-height-limits", extruder_idx);
Option option = optgroup->get_option("extruder_printable_area", extruder_idx); Option option = optgroup->get_option("extruder_printable_area", extruder_idx);
option.opt.full_width = true; option.opt.full_width = true;
optgroup->append_single_option_line(option); optgroup->append_single_option_line(option, "printer_extruder_basic_information#extruder-offset-position");
optgroup->m_on_change = [this, extruder_idx](const t_config_option_key& opt_key, boost::any value) optgroup->m_on_change = [this, extruder_idx](const t_config_option_key& opt_key, boost::any value)
{ {
@@ -4951,38 +4963,38 @@ if (is_marlin_flavor)
}; };
optgroup = page->new_optgroup(L("Layer height limits"), L"param_layer_height"); optgroup = page->new_optgroup(L("Layer height limits"), L"param_layer_height");
optgroup->append_single_option_line("min_layer_height", "", extruder_idx); optgroup->append_single_option_line("min_layer_height", "printer_extruder_basic_information#extruder-layer-height-limits", extruder_idx);
optgroup->append_single_option_line("max_layer_height", "", extruder_idx); optgroup->append_single_option_line("max_layer_height", "printer_extruder_basic_information#extruder-layer-height-limits", extruder_idx);
optgroup = page->new_optgroup(L("Position"), L"param_position"); optgroup = page->new_optgroup(L("Position"), L"param_position");
optgroup->append_single_option_line("extruder_offset", "", extruder_idx); 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 //BBS: don't show retract related config menu in machine page
optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); optgroup = page->new_optgroup(L("Retraction"), L"param_retraction");
optgroup->append_single_option_line("retraction_length", "", extruder_idx); optgroup->append_single_option_line("retraction_length", "printer_extruder_retraction#length", extruder_idx);
optgroup->append_single_option_line("retract_restart_extra", "", 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", "", extruder_idx); optgroup->append_single_option_line("retraction_speed", "printer_extruder_retraction#retraction-speed", extruder_idx);
optgroup->append_single_option_line("deretraction_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", "", 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", "", 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", "", extruder_idx); optgroup->append_single_option_line("wipe", "printer_extruder_retraction#wipe-while-retracting", extruder_idx);
optgroup->append_single_option_line("wipe_distance", "", extruder_idx); optgroup->append_single_option_line("wipe_distance", "printer_extruder_retraction#wipe-distance", extruder_idx);
optgroup->append_single_option_line("retract_before_wipe", "", extruder_idx); optgroup->append_single_option_line("retract_before_wipe", "printer_extruder_retraction#retract-amount-before-wipe", extruder_idx);
optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement"); optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement");
optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx); optgroup->append_single_option_line("retract_lift_enforce", "printer_extruder_z_hop#on-surfaces", extruder_idx);
optgroup->append_single_option_line("z_hop_types", "", 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", "", 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", "", 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", "", 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", "", extruder_idx); optgroup->append_single_option_line("retract_lift_below", "printer_extruder_z_hop#only-lift-z-below", extruder_idx);
optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change"); optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change");
optgroup->append_single_option_line("retract_length_toolchange", "", extruder_idx); optgroup->append_single_option_line("retract_length_toolchange", "printer_extruder_retraction#retraction-when-switching-materials", extruder_idx);
optgroup->append_single_option_line("retract_restart_extra_toolchange", "", extruder_idx); optgroup->append_single_option_line("retract_restart_extra_toolchange", "printer_extruder_retraction#retraction-when-switching-materials", extruder_idx);
// do not display this params now // do not display this params now
optgroup->append_single_option_line("long_retractions_when_cut", "", extruder_idx); optgroup->append_single_option_line("long_retractions_when_cut", "printer_extruder_retraction#long-retraction-when-cut-beta", extruder_idx);
optgroup->append_single_option_line("retraction_distances_when_cut", "", extruder_idx); optgroup->append_single_option_line("retraction_distances_when_cut", "printer_extruder_retraction#long-retraction-when-cut-beta", extruder_idx);
#if 0 #if 0
//optgroup = page->new_optgroup(L("Preview"), -1, true); //optgroup = page->new_optgroup(L("Preview"), -1, true);

View File

@@ -592,7 +592,7 @@ class TabPrinter : public Tab
{ {
private: private:
bool m_use_silent_mode = false; bool m_use_silent_mode = false;
void append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key); void append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key, const std::string& label_path = "");
bool m_rebuild_kinematics_page = false; bool m_rebuild_kinematics_page = false;
ogStaticText* m_fff_print_host_upload_description_line {nullptr}; ogStaticText* m_fff_print_host_upload_description_line {nullptr};