FIX:center object should select its plate first
jira: none Change-Id: I0f52bc12ac70e55135a5d1cce16163f9c7e32803 (cherry picked from commit 0a55e520bcca36a5994316e0ed73a6132b8a8d0e)
This commit is contained in:
parent
91d135a4de
commit
d1d60d0af2
|
@ -1542,13 +1542,20 @@ void MenuFactory::append_menu_item_center(wxMenu* menu)
|
||||||
{
|
{
|
||||||
append_menu_item(menu, wxID_ANY, _L("Center") , "",
|
append_menu_item(menu, wxID_ANY, _L("Center") , "",
|
||||||
[this](wxCommandEvent&) {
|
[this](wxCommandEvent&) {
|
||||||
|
auto canvas3d = plater()->get_view3D_canvas3D();
|
||||||
|
canvas3d->get_gizmos_manager().check_object_located_outside_plate(true);
|
||||||
plater()->center_selection();
|
plater()->center_selection();
|
||||||
}, "", nullptr,
|
}, "", nullptr,
|
||||||
[]() {
|
[]() {
|
||||||
if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D)
|
if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D)
|
||||||
return false;
|
return false;
|
||||||
else {
|
else {
|
||||||
Selection& selection = plater()->get_view3D_canvas3D()->get_selection();
|
auto canvas3d = plater()->get_view3D_canvas3D();
|
||||||
|
canvas3d->get_gizmos_manager().check_object_located_outside_plate(false);
|
||||||
|
if (canvas3d->get_gizmos_manager().get_object_located_outside_plate()) { //_outside_plate
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Selection &selection = canvas3d->get_selection();
|
||||||
PartPlate* plate = plater()->get_partplate_list().get_selected_plate();
|
PartPlate* plate = plater()->get_partplate_list().get_selected_plate();
|
||||||
Vec3d model_pos = selection.get_bounding_box().center();
|
Vec3d model_pos = selection.get_bounding_box().center();
|
||||||
Vec3d center_pos = plate->get_center_origin();
|
Vec3d center_pos = plate->get_center_origin();
|
||||||
|
|
|
@ -701,7 +701,8 @@ bool GLGizmosManager::get_gizmo_active_condition(GLGizmosManager::EType type) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLGizmosManager::check_object_located_outside_plate() {
|
void GLGizmosManager::check_object_located_outside_plate(bool change_plate)
|
||||||
|
{
|
||||||
PartPlateList &plate_list = wxGetApp().plater()->get_partplate_list();
|
PartPlateList &plate_list = wxGetApp().plater()->get_partplate_list();
|
||||||
auto curr_plate_index = plate_list.get_curr_plate_index();
|
auto curr_plate_index = plate_list.get_curr_plate_index();
|
||||||
Selection & selection = m_parent.get_selection();
|
Selection & selection = m_parent.get_selection();
|
||||||
|
@ -719,7 +720,7 @@ void GLGizmosManager::check_object_located_outside_plate() {
|
||||||
ModelObjectPtrs objects = plate->get_objects_on_this_plate();
|
ModelObjectPtrs objects = plate->get_objects_on_this_plate();
|
||||||
for (auto object : objects) {
|
for (auto object : objects) {
|
||||||
if (model_object == object) {
|
if (model_object == object) {
|
||||||
if (curr_plate_index != i) { // confirm selected model_object at corresponding plate
|
if (change_plate && curr_plate_index != i) { // confirm selected model_object at corresponding plate
|
||||||
wxGetApp().plater()->get_partplate_list().select_plate(i);
|
wxGetApp().plater()->get_partplate_list().select_plate(i);
|
||||||
}
|
}
|
||||||
find_object = true;
|
find_object = true;
|
||||||
|
|
|
@ -288,7 +288,7 @@ public:
|
||||||
bool is_gizmo_click_empty_not_exit();
|
bool is_gizmo_click_empty_not_exit();
|
||||||
bool is_show_only_active_plate();
|
bool is_show_only_active_plate();
|
||||||
bool get_gizmo_active_condition(GLGizmosManager::EType type);
|
bool get_gizmo_active_condition(GLGizmosManager::EType type);
|
||||||
void check_object_located_outside_plate();
|
void check_object_located_outside_plate(bool change_plate =true);
|
||||||
bool get_object_located_outside_plate() { return m_object_located_outside_plate; }
|
bool get_object_located_outside_plate() { return m_object_located_outside_plate; }
|
||||||
bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position = Vec2d::Zero(), bool shift_down = false, bool alt_down = false, bool control_down = false);
|
bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position = Vec2d::Zero(), bool shift_down = false, bool alt_down = false, bool control_down = false);
|
||||||
bool is_paint_gizmo();
|
bool is_paint_gizmo();
|
||||||
|
|
Loading…
Reference in New Issue