Skip to content

Commit

Permalink
FIX: fix the crash issue when change setting after .gcode.3mf loaded
Browse files Browse the repository at this point in the history
Change-Id: I47ae6c6b14f94858ff9789ef3ed927930b611203
(cherry picked from commit ad548cdc7491fd432603c80ea2fcf151115efd10)
  • Loading branch information
lanewei120 committed Jul 7, 2023
1 parent f96e60a commit 0fcc235
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
17 changes: 10 additions & 7 deletions src/libslic3r/GCode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1484,13 +1484,16 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
for (auto layer : object->support_layers())
zs.push_back(layer->print_z);
}
std::sort(zs.begin(), zs.end());
//BBS: merge numerically very close Z values.
auto end_it = std::unique(zs.begin(), zs.end());
m_layer_count = (unsigned int)(end_it - zs.begin());
for (auto it = zs.begin(); it != end_it - 1; it++) {
if (abs(*it - *(it + 1)) < EPSILON)
m_layer_count--;
if (!zs.empty())
{
std::sort(zs.begin(), zs.end());
//BBS: merge numerically very close Z values.
auto end_it = std::unique(zs.begin(), zs.end());
m_layer_count = (unsigned int)(end_it - zs.begin());
for (auto it = zs.begin(); it != end_it - 1; it++) {
if (abs(*it - *(it + 1)) < EPSILON)
m_layer_count--;
}
}
}
print.throw_if_canceled();
Expand Down
4 changes: 3 additions & 1 deletion src/slic3r/GUI/Plater.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4716,6 +4716,7 @@ 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())
{
Expand Down Expand Up @@ -11199,7 +11200,8 @@ int Plater::select_plate(int plate_index, bool need_slice)
{
if (need_slice) { //from preview's thumbnail
if ((invalidated & PrintBase::APPLY_STATUS_INVALIDATED) || (gcode_result->moves.empty())){
//part_plate->update_slice_result_valid_state(false);
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;
reset_gcode_toolpaths();
Expand Down

0 comments on commit 0fcc235

Please sign in to comment.