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") , "",
|
||||
[this](wxCommandEvent&) {
|
||||
auto canvas3d = plater()->get_view3D_canvas3D();
|
||||
canvas3d->get_gizmos_manager().check_object_located_outside_plate(true);
|
||||
plater()->center_selection();
|
||||
}, "", nullptr,
|
||||
[]() {
|
||||
if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D)
|
||||
return false;
|
||||
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();
|
||||
Vec3d model_pos = selection.get_bounding_box().center();
|
||||
Vec3d center_pos = plate->get_center_origin();
|
||||
|
|
|
@ -701,7 +701,8 @@ bool GLGizmosManager::get_gizmo_active_condition(GLGizmosManager::EType type) {
|
|||
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();
|
||||
auto curr_plate_index = plate_list.get_curr_plate_index();
|
||||
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();
|
||||
for (auto object : objects) {
|
||||
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);
|
||||
}
|
||||
find_object = true;
|
||||
|
|
|
@ -288,7 +288,7 @@ public:
|
|||
bool is_gizmo_click_empty_not_exit();
|
||||
bool is_show_only_active_plate();
|
||||
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 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();
|
||||
|
|
Loading…
Reference in New Issue