From 4e6d0d7f0858cb7d972690f5387fb0bfbc2014ff Mon Sep 17 00:00:00 2001 From: John Lewin Date: Wed, 28 Mar 2018 17:14:46 -0700 Subject: [PATCH] Center on bounding box When grouping items, move them to be centered on their bounding box --- PartPreviewWindow/View3D/UndoCommands/GroupCommand.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/PartPreviewWindow/View3D/UndoCommands/GroupCommand.cs b/PartPreviewWindow/View3D/UndoCommands/GroupCommand.cs index 94f4db6dc..66a222d1e 100644 --- a/PartPreviewWindow/View3D/UndoCommands/GroupCommand.cs +++ b/PartPreviewWindow/View3D/UndoCommands/GroupCommand.cs @@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project. using MatterHackers.Agg.UI; using MatterHackers.DataConverters3D; using MatterHackers.Localizations; +using MatterHackers.MatterControl.DesignTools.Operations; using MatterHackers.MeshVisualizer; namespace MatterHackers.MatterControl.PartPreviewWindow @@ -56,18 +57,26 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { Name = "Group".Localize() }; + + // When grouping items, move them to be centered on their bounding box newGroup.Children.Modify((gChildren) => { selectedItem.Children.Modify((sChildren) => { - foreach(var child in sChildren) + var center = selectedItem.GetAxisAlignedBoundingBox().Center; + + foreach (var child in sChildren) { + child.Translate(-center.X, -center.Y, 0); gChildren.Add(child); } + newGroup.Translate(center.X, center.Y, 0); + sChildren.Clear(); }); }); + scene.Children.Add(newGroup); scene.SelectedItem = null; item = newGroup;