Merge remote-tracking branch 'upstream/main' into dev/h2d-2

# Conflicts:
#	src/slic3r/GUI/Tab.cpp
This commit is contained in:
Noisyfox
2025-09-24 09:15:33 +08:00
261 changed files with 9126 additions and 1172 deletions

View File

@@ -191,6 +191,10 @@ void IMSlider::SetSelectionSpan(const int lower_val, const int higher_val)
m_higher_value = std::max(std::min(higher_val, m_max_value), m_lower_value);
if (m_lower_value < m_higher_value) m_is_one_layer = false;
// ORCA reset single layer position when min max values changed
// This will trigger when print height changed. but stays same on reslicing if layer count is same
m_one_layer_value = int((m_higher_value - m_lower_value)/2);
set_as_dirty();
}
@@ -443,9 +447,20 @@ bool IMSlider::switch_one_layer_mode()
return false;
m_is_one_layer = !m_is_one_layer;
if (!m_is_one_layer) {
if (!m_is_one_layer) { // DEACTIVATE
m_one_layer_value = GetHigherValue(); // ORCA Backup value on deactivate
SetLowerValue(m_min_value);
SetHigherValue(m_max_value);
SetHigherValue(m_max_value); // Higher value resets on toggling off one layer mode to show whole model
}else{ // ACTIVATE
// ORCA Ensure value fits range. value set in IMSlider::SetSelectionSpan but added this just in case
if(!m_one_layer_value || m_one_layer_value > m_max_value || m_one_layer_value < m_min_value){
m_one_layer_value = int((m_max_value - m_min_value)/2);
SetHigherValue(m_one_layer_value);
}
else if(GetHigherValue() == m_max_value) // ORCA Prefer backup value if higher value reseted
SetHigherValue(m_one_layer_value); // ORCA Restore value
else // ORCA Prefer higher value if user changed higher value. so it will show section on same view
SetHigherValue(GetHigherValue()); // ORCA use same position with higher value if user changed its position. visible section stays same when switching one layer mode with this
}
m_selection == ssLower ? correct_lower_value() : correct_higher_value();
if (m_selection == ssUndef) m_selection = ssHigher;
@@ -1487,6 +1502,7 @@ void IMSlider::on_mouse_wheel(wxMouseEvent& evt) {
if (is_one_layer()) {
const int new_pos = GetHigherValue() + wheel;
SetHigherValue(new_pos);
m_one_layer_value = new_pos; // ORCA backup value for single layer mode
}
else {
const int new_pos = m_selection == ssLower ? GetLowerValue() + wheel : GetHigherValue() + wheel;

View File

@@ -179,6 +179,7 @@ private:
int m_max_value;
int m_lower_value;
int m_higher_value;
int m_one_layer_value; // ORCA
bool m_dirty = false;
bool m_render_as_disabled{ false };

View File

@@ -501,7 +501,7 @@ void PartPlate::calc_gridlines(const ExPolygon& poly, const BoundingBox& pp_bbox
// calculate and generate grid
int step = Bed_2D::calculate_grid_step(pp_bbox, scale_(1.00));
Vec2d scaled_origin = Vec2d(scale_(m_origin.x()),scale_(m_origin.x()));
Vec2d scaled_origin = Vec2d(scale_(m_origin.x()),scale_(m_origin.y()));
auto grid_lines = Bed_2D::generate_grid(poly, pp_bbox, scaled_origin, scale_(step), SCALED_EPSILON);
Lines lines_thin = to_lines(grid_lines[0]);

View File

@@ -5399,7 +5399,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
// }
// }
// Orca: check if the project is created with OrcaSlicer 2.3.1-alpha and use the sparse infill rotation template for non-safe infill patterns
else if ((file_version < app_version) && file_version == Semver("2.3.1-alpha")) {
else if (load_config && (file_version < app_version) && file_version == Semver("2.3.1-alpha")) {
if (!config_loaded.opt_string("sparse_infill_rotate_template").empty()) {
const auto _sparse_infill_pattern =
config_loaded.option<ConfigOptionEnum<InfillPattern>>("sparse_infill_pattern")->value;

View File

@@ -4031,6 +4031,10 @@ void TabFilament::toggle_options()
"filament_cooling_initial_speed", "filament_cooling_final_speed"})
toggle_option(el, !is_BBL_printer);
bool multitool_ramming = m_config->opt_bool("filament_multitool_ramming", 0);
toggle_option("filament_multitool_ramming_volume", multitool_ramming);
toggle_option("filament_multitool_ramming_flow", multitool_ramming);
const int extruder_idx = 0; // m_variant_combo->GetSelection(); // TODO: Orca hack
toggle_line("retraction_distances_when_ec", m_config->opt_bool("long_retractions_when_ec", extruder_idx), 256 + extruder_idx);
}