FIX:fix bug of toggle_selection by right click
Jira: STUDIO-6511 Change-Id: I24efc6462c97902890bdd1b73ae6005cb3b6d958
This commit is contained in:
parent
94f62f7389
commit
f2c712a688
|
@ -573,6 +573,9 @@ void GLGizmoAdvancedCut::on_start_dragging()
|
|||
|
||||
void GLGizmoAdvancedCut::on_stop_dragging()
|
||||
{
|
||||
if (m_is_dragging ==false) {
|
||||
return;
|
||||
}
|
||||
m_is_dragging = false;
|
||||
if (m_hover_id == X || m_hover_id == Y || m_hover_id == Z) {
|
||||
Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Rotate cut plane");
|
||||
|
@ -867,7 +870,7 @@ void GLGizmoAdvancedCut::perform_cut(const Selection& selection)
|
|||
});
|
||||
|
||||
const bool cut_with_groove = m_cut_mode == CutMode::cutTongueAndGroove;
|
||||
bool cut_by_contour = false;//!cut_with_groove && !m_cut_to_parts && m_part_selection->valid();
|
||||
bool cut_by_contour = !cut_with_groove && m_part_selection->valid() && m_part_selection->has_modified_cut_parts();
|
||||
|
||||
ModelObject *cut_mo = cut_by_contour ? m_part_selection->model_object() : nullptr;
|
||||
if (cut_mo)
|
||||
|
@ -2577,6 +2580,10 @@ PartSelection::PartSelection(
|
|||
i++;
|
||||
}
|
||||
|
||||
m_back_cut_parts_state.resize(m_cut_parts.size());
|
||||
for (size_t i = 0; i < m_cut_parts.size(); i++) {
|
||||
m_back_cut_parts_state[i] = m_cut_parts[i].is_up_part;
|
||||
}
|
||||
// Now go through the contours and create a map from contours to parts.
|
||||
m_contour_points.clear();
|
||||
m_contour_to_parts.clear();
|
||||
|
@ -2687,6 +2694,19 @@ std::vector<Cut::Part> PartSelection::get_cut_parts()
|
|||
return parts;
|
||||
}
|
||||
|
||||
bool PartSelection::has_modified_cut_parts()
|
||||
{
|
||||
if (m_back_cut_parts_state.size() == 0 || m_back_cut_parts_state.size() != m_cut_parts.size()) {
|
||||
return false;
|
||||
}
|
||||
for (size_t i = 0; i < m_cut_parts.size(); i++) {
|
||||
if (m_back_cut_parts_state[i] != m_cut_parts[i].is_up_part) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void PartSelection::toggle_selection(const Vec2d &mouse_pos)
|
||||
{
|
||||
const Camera &camera = wxGetApp().plater()->get_camera();
|
||||
|
|
|
@ -51,11 +51,13 @@ public:
|
|||
|
||||
std::vector<Cut::Part> get_cut_parts();
|
||||
std::vector<PartPara> &get_parts() { return m_cut_parts; }
|
||||
bool has_modified_cut_parts();
|
||||
|
||||
private:
|
||||
Model m_model;
|
||||
int m_instance_idx;
|
||||
std::vector<PartPara> m_cut_parts;
|
||||
std::vector<bool> m_back_cut_parts_state;
|
||||
bool m_valid = false;
|
||||
std::vector<std::pair<std::vector<size_t>, std::vector<size_t>>> m_contour_to_parts; // for each contour, there is a vector of parts above and a vector of parts below
|
||||
std::vector<size_t> m_ignored_contours; // contour that should not be rendered (the parts on both sides will both be parts of the same object)
|
||||
|
|
Loading…
Reference in New Issue