Making ungroup and flatten do the same behavior and always be available

This commit is contained in:
LarsBrubaker 2018-12-12 09:38:04 -08:00
parent 4092d34e01
commit 3e38fac335
3 changed files with 23 additions and 4 deletions

View file

@ -597,7 +597,8 @@ namespace MatterHackers.MatterControl
if(selectedItem != null)
{
return selectedItem is GroupObject3D
|| selectedItem.GetType() == typeof(Object3D);
|| selectedItem.GetType() == typeof(Object3D)
|| selectedItem.CanFlatten;
}
return false;

View file

@ -38,6 +38,7 @@ using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.CustomWidgets;
using MatterHackers.MatterControl.DesignTools;
using MatterHackers.MatterControl.DesignTools.Operations;
using MatterHackers.MatterControl.Library;
using MatterHackers.MatterControl.SlicerConfiguration;
using static JsonPath.JsonPathContext.ReflectionValueSystem;
@ -83,11 +84,19 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
Margin = theme.ButtonSpacing,
ToolTipText = "Flatten".Localize(),
Enabled = scene.SelectedItem?.CanFlatten == true
Enabled = true
};
flattenButton.Click += (s, e) =>
{
this.item.Flatten(view3DWidget.Scene.UndoBuffer);
if (this.item.CanFlatten)
{
this.item.Flatten(view3DWidget.Scene.UndoBuffer);
}
else
{
// try to ungroup it
sceneContext.Scene.UngroupSelection();
}
scene.SelectedItem = null;
};
toolbar.AddChild(flattenButton);
@ -387,7 +396,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var selectedItem = scene.SelectedItem;
flattenButton.Enabled = selectedItem?.CanFlatten == true;
flattenButton.Enabled = selectedItem != null
&& (selectedItem is GroupObject3D
|| selectedItem.GetType() == typeof(Object3D)
|| selectedItem.CanFlatten);
removeButton.Enabled = selectedItem != null;
overflowButton.Enabled = selectedItem != null;
}

View file

@ -73,6 +73,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var selectedItem = scene.SelectedItem;
if (selectedItem != null)
{
if(selectedItem.CanFlatten)
{
selectedItem.Flatten(scene.UndoBuffer);
scene.SelectedItem = null;
return;
}
bool isGroupItemType = selectedItem.Children.Count > 0;
// If not a Group ItemType, look for mesh volumes and split into distinct objects if found