From ff42ad55127b804056a8f24869978fa42def75a2 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Fri, 31 Mar 2017 14:05:01 +0200 Subject: [PATCH] Added "Move to bed center" in the object menu --- lib/Slic3r/GUI/Plater.pm | 20 ++++++++++++++++++++ var/arrow_in.png | Bin 0 -> 600 bytes 2 files changed, 20 insertions(+) create mode 100755 var/arrow_in.png diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 60027cb5d..6b21b8aad 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1073,6 +1073,23 @@ sub set_number_of_copies { } } +sub center_selected_object_on_bed { + my ($self) = @_; + + my ($obj_idx, $object) = $self->selected_object; + return if !defined $obj_idx; + + my $model_object = $self->{model}->objects->[$obj_idx]; + my $bb = $model_object->bounding_box; + my $size = $bb->size; + my $vector = Slic3r::Pointf->new( + -$bb->x_min - $size->x/2, + -$bb->y_min - $size->y/2, #// + ); + $_->offset->translate(@$vector) for @{$model_object->instances}; + $self->refresh_canvases; +} + sub rotate { my $self = shift; my ($angle, $axis) = @_; @@ -2309,6 +2326,9 @@ sub object_menu { $self->set_number_of_copies; }, undef, 'textfield.png'); $menu->AppendSeparator(); + $frame->_append_menu_item($menu, "Move to bed center", 'Center object around bed center', sub { + $self->center_selected_object_on_bed; + }, undef, 'arrow_in.png'); $frame->_append_menu_item($menu, "Rotate 45° clockwise", 'Rotate the selected object by 45° clockwise', sub { $self->rotate(-45); }, undef, 'arrow_rotate_clockwise.png'); diff --git a/var/arrow_in.png b/var/arrow_in.png new file mode 100755 index 0000000000000000000000000000000000000000..745c65134db478a64016d63a7104e585452f2b9f GIT binary patch literal 600 zcmV-e0;m0nP)PbXFR5;7s zk=srhQ51%Gi+LO^77wV16dAzbG@wAMB7&i`(b(8xDqyU&#ij;pOFf{D;3PUo6_qH7 z@zCD%DY)SY{?6Vev}G>5=v^;XviDy5`&RNV6#!MZ;uAv`-s;%-AVco=6~AW@oV#X; zoCz$&Z(d;jHilq%pcXjuFe4{!G(v;>9DU>S79m;;B2ox|%Nj+MJXx5%p2GUiG!j?S z2%Y&cbj&LR9?=RJ#?#^`7Ar|SI}E|PVW`sPXn8=Gxtzq(^&D1yr10dMQz3B4@Y_lP zuSye$7RF#%H`Lg#dZzwixa6krr|(Pf7aR(KLtwFRkwCIM1ACSQfoTSJFpr@l7akX# z@D=Rv9@rED+g2a?Hy@G7U^9C3eb%8a_?P-$1a5i9WKAS#+qN85)~E=vH{A*SvKG1z z?dVFiLHkbgJ49E`%y@DfW=~%tej1}mHwt<_YB9MVMN|yeVJaZ7Jh>K;f_N^45j&cq zYibm9%abEw2)<1>?5kF^y-^EP;Mg%$3H-V=jgh?XuO0tco$p(rOKHJp92n09(Vu4V zFxf1qxGkd?5d9d=dtu7-P^)33OCji3)S!K#g=w8v*PN>ytji{-6HO9rn%8