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));
|
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,
|
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));
|
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::PopStyleColor(4);
|
||||||
ImGui::SameLine(set_to_center_coincidence_size + m_space_size * 2);
|
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) {
|
if (m_hit_different_volumes.size() == 2) {
|
||||||
auto &action = m_assembly_action;
|
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);
|
selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance);
|
||||||
const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane();
|
const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane();
|
||||||
const auto [idx2, normal2, pt2] = m_selected_features.second.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 ++;
|
m_pending_scale ++;
|
||||||
Vec3d axis;
|
Vec3d axis;
|
||||||
double angle;
|
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) {
|
void GLGizmoMeasure::set_to_center_coincidence(bool same_model_object) {
|
||||||
auto v = m_hit_different_volumes[1];
|
auto v = m_hit_different_volumes[1];
|
||||||
wxGetApp().plater()->take_snapshot("RotateThenMoveInMeasure", UndoRedo::SnapshotType::GizmoAction);
|
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 [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane();
|
||||||
const auto [idx2, normal2, pt2] = m_selected_features.second.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_world_plane_features(Measure::Measuring *cur_measuring, Measure::SurfaceFeature &feautre);
|
||||||
void update_feature_by_tran(Measure::SurfaceFeature & feature);
|
void update_feature_by_tran(Measure::SurfaceFeature & feature);
|
||||||
void set_distance(bool same_model_object, const Vec3d &displacement, bool take_shot = true);
|
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_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_around_center_of_faces(bool same_model_object,float rotate_degree);
|
||||||
void set_to_center_coincidence(bool same_model_object);
|
void set_to_center_coincidence(bool same_model_object);
|
||||||
|
|
Loading…
Reference in New Issue