FIX:add is_anti_parallel option for set_to_parallel api
jira: none Change-Id: Ia49661e5dbb7b28e9b66da14b4960426d80df06b
This commit is contained in:
parent
dbff3729a4
commit
e3fc46f121
|
@ -2026,7 +2026,9 @@ void GLGizmoMeasure::show_face_face_assembly_common() {
|
|||
m_is_dark_mode ? ImVec4(206 / 255.0f, 206 / 255.0f, 206 / 255.0f, 1.00f) : ImVec4(206 / 255.0f, 206 / 255.0f, 206 / 255.0f, 1.00f));
|
||||
ImGui::PushStyleColor(ImGuiCol_Text,
|
||||
m_is_dark_mode ? ImVec4(255 / 255.0f, 255 / 255.0f, 255 / 255.0f, 1.00f) : ImVec4(255 / 255.0f, 255 / 255.0f, 255 / 255.0f, 1.00f));
|
||||
if (m_imgui->button(_L("Center coincidence"))) { set_to_center_coincidence(m_same_model_object); }
|
||||
if (m_imgui->button(_L("Center coincidence"))) {
|
||||
set_to_center_coincidence(m_same_model_object);
|
||||
}
|
||||
ImGui::PopStyleColor(4);
|
||||
ImGui::SameLine(set_to_center_coincidence_size + m_space_size * 2);
|
||||
}
|
||||
|
@ -2447,7 +2449,7 @@ void GLGizmoMeasure::set_distance(bool same_model_object, const Vec3d &displacem
|
|||
}
|
||||
}
|
||||
|
||||
void GLGizmoMeasure::set_to_parallel(bool same_model_object, bool take_shot)
|
||||
void GLGizmoMeasure::set_to_parallel(bool same_model_object, bool take_shot, bool is_anti_parallel)
|
||||
{
|
||||
if (m_hit_different_volumes.size() == 2) {
|
||||
auto &action = m_assembly_action;
|
||||
|
@ -2460,7 +2462,8 @@ void GLGizmoMeasure::set_to_parallel(bool same_model_object, bool take_shot)
|
|||
selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance);
|
||||
const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane();
|
||||
const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane();
|
||||
if (abs(normal1.dot(normal2) < 1 - 1e-3)) {
|
||||
if ((is_anti_parallel && normal1.dot(normal2) > -1 + 1e-3) ||
|
||||
(is_anti_parallel == false && (normal1.dot(normal2) < 1 - 1e-3))) {
|
||||
m_pending_scale ++;
|
||||
Vec3d axis;
|
||||
double angle;
|
||||
|
@ -2583,7 +2586,7 @@ void GLGizmoMeasure::set_to_around_center_of_faces(bool same_model_object, float
|
|||
void GLGizmoMeasure::set_to_center_coincidence(bool same_model_object) {
|
||||
auto v = m_hit_different_volumes[1];
|
||||
wxGetApp().plater()->take_snapshot("RotateThenMoveInMeasure", UndoRedo::SnapshotType::GizmoAction);
|
||||
set_to_parallel(same_model_object, false);
|
||||
set_to_parallel(same_model_object, false,true);
|
||||
|
||||
const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane();
|
||||
const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane();
|
||||
|
|
|
@ -278,7 +278,7 @@ protected:
|
|||
void update_world_plane_features(Measure::Measuring *cur_measuring, Measure::SurfaceFeature &feautre);
|
||||
void update_feature_by_tran(Measure::SurfaceFeature & feature);
|
||||
void set_distance(bool same_model_object, const Vec3d &displacement, bool take_shot = true);
|
||||
void set_to_parallel(bool same_model_object, bool take_shot = true);
|
||||
void set_to_parallel(bool same_model_object, bool take_shot = true, bool is_anti_parallel = false);
|
||||
void set_to_reverse_rotation(bool same_model_object,int feature_index);
|
||||
void set_to_around_center_of_faces(bool same_model_object,float rotate_degree);
|
||||
void set_to_center_coincidence(bool same_model_object);
|
||||
|
|
Loading…
Reference in New Issue