diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml
index ef07651217..7dc1b5b52a 100644
--- a/.github/workflows/build_all.yml
+++ b/.github/workflows/build_all.yml
@@ -54,7 +54,7 @@ jobs:
strategy:
fail-fast: false
# Don't run scheduled builds on forks:
- if: github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer'
+ if: !cancelled() && (github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer')
uses: ./.github/workflows/build_check_cache.yml
with:
os: ubuntu-24.04
@@ -70,7 +70,7 @@ jobs:
- os: macos-14
arch: arm64
# Don't run scheduled builds on forks:
- if: github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer'
+ if: !cancelled() && (github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer')
uses: ./.github/workflows/build_check_cache.yml
with:
os: ${{ matrix.os }}
@@ -82,7 +82,7 @@ jobs:
name: Unit Tests
runs-on: ubuntu-24.04
needs: build_linux
- if: ${{ success() }}
+ if: ${{ !cancelled() && success() }}
steps:
- name: Checkout
uses: actions/checkout@v5
@@ -134,7 +134,7 @@ jobs:
- arch: aarch64
runner: ubuntu-24.04-arm
# Don't run scheduled builds on forks:
- if: github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer'
+ if: !cancelled() && (github.event_name != 'schedule' || github.repository == 'SoftFever/OrcaSlicer')
runs-on: ${{ matrix.variant.runner }}
env:
date:
diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml
index fbd3ef723e..4e83d50115 100644
--- a/.github/workflows/build_deps.yml
+++ b/.github/workflows/build_deps.yml
@@ -26,7 +26,7 @@ on:
jobs:
build_deps:
name: Build Deps
- if: inputs.build-deps-only || inputs.force-build || inputs.valid-cache != true
+ if: !cancelled() && (inputs.build-deps-only || inputs.force-build || inputs.valid-cache != true)
runs-on: ${{ inputs.os }}
env:
date:
diff --git a/resources/images/plate_set_filament_map.svg b/resources/images/plate_set_filament_map.svg
index bb5fbfe71d..cca856e7ec 100644
--- a/resources/images/plate_set_filament_map.svg
+++ b/resources/images/plate_set_filament_map.svg
@@ -1,12 +1 @@
-
+
\ No newline at end of file
diff --git a/resources/images/plate_set_filament_map_dark.svg b/resources/images/plate_set_filament_map_dark.svg
index 1611427d85..868445d2e4 100644
--- a/resources/images/plate_set_filament_map_dark.svg
+++ b/resources/images/plate_set_filament_map_dark.svg
@@ -1,12 +1 @@
-
+
\ No newline at end of file
diff --git a/resources/images/plate_set_filament_map_hover.svg b/resources/images/plate_set_filament_map_hover.svg
index 9b957b932d..8c4c461b22 100644
--- a/resources/images/plate_set_filament_map_hover.svg
+++ b/resources/images/plate_set_filament_map_hover.svg
@@ -1,12 +1 @@
-
+
\ No newline at end of file
diff --git a/resources/images/plate_set_filament_map_hover_dark.svg b/resources/images/plate_set_filament_map_hover_dark.svg
index 8aa6fe159c..4e0fdb965c 100644
--- a/resources/images/plate_set_filament_map_hover_dark.svg
+++ b/resources/images/plate_set_filament_map_hover_dark.svg
@@ -1,12 +1 @@
-
+
\ No newline at end of file
diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json
index 7949ac755b..e60c9a37f7 100644
--- a/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json
+++ b/resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json
@@ -108,7 +108,7 @@
],
"machine_start_gcode": "G90 ;Use absolute coordinates\nM83 ;Extruder relative mode\nM104 S[first_layer_temperature] ;Set extruder temp\nM140 S[first_layer_bed_temperature] ;Set bed temp\nM190 S[first_layer_bed_temperature] ;Wait for bed temp\nM109 S[first_layer_temperature] ;Wait for extruder temp\nG28 ;Move X/Y/Z to min endstops\nG1 Z0.28 ;Lift nozzle a bit\nG92 E0 ;Specify current extruder position as zero\nG1 Y3 F1800 ;Move Y to purge point\nG1 X60 E25 F500 ;Extrude 25mm of filament in a 5cm line\nG92 E0 ;Zero the extruded length again\nG1 E-2 F500 ;Retract a little\nG1 X70 F4000 ;Quickly wipe away from the filament line\nM117",
"machine_end_gcode": "M104 S0 ;Extruder off\nM140 S0 ;Heatbed off\nM107 ;Fan off\nG91 ;Relative positioning\nG1 E-5 F3000 ;Retract filament\nG1 Z+0.3 F3000 ;Lift print head\nG28 X0 F3000 ;Home X axis\nM84 ;Disable stepper motors",
- "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n[layer_num] @ [layer_z]mm/nG92 E0",
+ "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n[layer_num] @ [layer_z]mm\nG92 E0",
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n[layer_num] @ [layer_z]mm",
"scan_first_layer": "0"
-}
\ No newline at end of file
+}
diff --git a/src/libslic3r/Support/TreeModelVolumes.cpp b/src/libslic3r/Support/TreeModelVolumes.cpp
index 9cf8b3df37..0267c0c327 100644
--- a/src/libslic3r/Support/TreeModelVolumes.cpp
+++ b/src/libslic3r/Support/TreeModelVolumes.cpp
@@ -665,6 +665,7 @@ void TreeModelVolumes::calculateAvoidance(const std::vector &ke
// Limiting the offset step so that unioning the shrunk latest_avoidance with the current layer collisions
// will not create gaps in the resulting avoidance region letting a tree support branch tunneling through an object wall.
float move_step = 1.9 * std::max(task.radius, m_current_min_xy_dist);
+ if (move_step < EPSILON) return;
int move_steps = round_up_divide(max_move, move_step);
assert(move_steps > 0);
float last_move_step = max_move - (move_steps - 1) * move_step;
diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp
index 3375ac668a..6ee0733abd 100644
--- a/src/slic3r/GUI/PartPlate.cpp
+++ b/src/slic3r/GUI/PartPlate.cpp
@@ -1096,11 +1096,13 @@ void PartPlate::render_icons(bool bottom, bool only_name, int hover_id)
render_icon_texture(m_lock_icon.model, m_partplate_list->m_lockopen_texture);
}
- int extruder_count = wxGetApp().preset_bundle->get_printer_extruder_count();
- if (extruder_count == 2) {
- if (hover_id == PLATE_FILAMENT_MAP_ID)
+ PresetBundle* preset = wxGetApp().preset_bundle;
+ bool dual_bbl = (preset->is_bbl_vendor() && preset->get_printer_extruder_count() == 2);
+ if (dual_bbl) {
+ if (hover_id == PLATE_FILAMENT_MAP_ID){
render_icon_texture(m_plate_filament_map_icon.model, m_partplate_list->m_plate_set_filament_map_hovered_texture);
- else
+ show_tooltip(_u8L("Filament grouping"));
+ } else
render_icon_texture(m_plate_filament_map_icon.model, m_partplate_list->m_plate_set_filament_map_texture);
}
@@ -3044,9 +3046,11 @@ bool PartPlate::set_shape(const Pointfs& shape, const Pointfs& exclude_areas, co
calc_vertex_for_icons(2, m_arrange_icon);
calc_vertex_for_icons(3, m_lock_icon);
calc_vertex_for_icons(4, m_plate_settings_icon);
- calc_vertex_for_icons(5, m_plate_filament_map_icon);
- calc_vertex_for_icons(6, m_move_front_icon);
// ORCA also change bed_icon_count number in calc_vertex_for_icons() after adding or removing icons for circular shaped beds that uses vertical alingment for icons
+ PresetBundle* preset = wxGetApp().preset_bundle;
+ bool dual_bbl = (preset->is_bbl_vendor() && preset->get_printer_extruder_count() == 2);
+ calc_vertex_for_icons(dual_bbl ? 5 : 6, m_plate_filament_map_icon);
+ calc_vertex_for_icons(dual_bbl ? 6 : 5, m_move_front_icon);
//calc_vertex_for_number(0, (m_plate_index < 9), m_plate_idx_icon);
calc_vertex_for_number(0, false, m_plate_idx_icon);