Replace duplicate ItemsToSubtract property with SelectedChildren

- Update to use new SelecteChildren as HashSet
- Issue MatterHackers/MCCentral#5565
MatterControl extra slow with specific MCX, crashes on copy
This commit is contained in:
jlewin 2019-05-20 16:37:45 -07:00
parent 3bd2eccf9c
commit a7b8251807
8 changed files with 16 additions and 15 deletions

View file

@ -234,7 +234,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
{
if (SelectedChild.Count > 0)
{
return this.Children.Where(c => c.ID == SelectedChild[0]).FirstOrDefault();
return this.Children.Where(c => c.ID == SelectedChild.First()).FirstOrDefault();
}
return this.Children.FirstOrDefault();

View file

@ -270,7 +270,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
subtract.Children.Add(a.Clone());
var bClone = b.Clone();
subtract.Children.Add(bClone);
subtract.ItemsToSubtract.Add(bClone.ID);
subtract.SelectedChildren.Add(bClone.ID);
subtract.Subtract();

View file

@ -176,7 +176,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
SubtractAndReplace(cancellationToken, reporter);
var newComputedChildren = new SelectedChildren();
newComputedChildren.AddRange(SelectedChildren);
foreach (var id in SelectedChildren)
{
newComputedChildren.Add(id);
}
ComputedChildren = newComputedChildren;
}
catch

View file

@ -53,9 +53,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
Name = "Subtract";
}
public SelectedChildren ItemsToSubtract { get; set; } = new SelectedChildren();
public SelectedChildren SelectedChildren => ItemsToSubtract;
public SelectedChildren SelectedChildren { get; set; } = new SelectedChildren();
public override async void OnInvalidate(InvalidateArgs invalidateType)
{
@ -115,13 +113,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
bool ItemInSubtractList(IObject3D item)
{
if (ItemsToSubtract.Contains(item.ID))
if (SelectedChildren.Contains(item.ID))
{
return true;
}
// check if the wrapped item is in the subtract list
if (item.Children.Count > 0 && ItemsToSubtract.Contains(item.Children.First().ID))
if (item.Children.Count > 0 && SelectedChildren.Contains(item.Children.First().ID))
{
return true;
}

View file

@ -63,8 +63,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
var parentOfSubtractTargets = this.SourceContainer.DescendantsAndSelfMultipleChildrenFirstOrSelf();
var removeObjects = parentOfSubtractTargets.Children
.Where((i) => SelectedChildren
.Contains(i.ID))
.Where(i => SelectedChildren.Contains(i.ID))
.SelectMany(c => c.VisibleMeshes())
.ToList();
@ -74,8 +73,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
}
var keepItems = parentOfSubtractTargets.Children
.Where((i) => !SelectedChildren
.Contains(i.ID))
.Where(i => !SelectedChildren.Contains(i.ID))
.ToList();
foreach (var keepItem in keepItems)

View file

@ -60,7 +60,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
names = item.Children.Select(child => (child.ID, child.Name)).ToList();
if (item.SelectedChild.Count == 1)
{
selectedID = item.SelectedChild[0];
selectedID = item.SelectedChild.First();
}
}

@ -1 +1 @@
Subproject commit ad8d39a9d72bbf560a4b235a7979411b79327c2d
Subproject commit f8d12266e143e85835e5940166fb7d13c67791b6

View file

@ -276,7 +276,7 @@ namespace MatterControl.Tests.MatterControl
var subtract = new SubtractObject3D();
subtract.Children.Add(cubeA);
subtract.Children.Add(offsetCubeB);
subtract.ItemsToSubtract.Add(offsetCubeB.ID);
subtract.SelectedChildren.Add(offsetCubeB.ID);
root.Children.Add(subtract);
subtract.Subtract();