private void UndoRedo_Remove(UndoRedoAddRemove[] items, bool isAllLayers) { if (isAllLayers) { ChangeLayer(-1, true); } foreach (UndoRedoAddRemove item in items) { if (!isAllLayers) { ChangeLayer(item.LayerIndex, true); } // Find the part DesignPart actualPart = _parts.SelectMany(o => o.Where(p => p.Part3D.Token == item.Token)).FirstOrDefault(); if (actualPart == null) { throw new ApplicationException("Couldn't find part: " + actualPart.ToString()); } // Remove the part if (_viewport.Children.Contains(actualPart.Model)) // the layer could be invisible, so the model may not be there { _viewport.Children.Remove(actualPart.Model); // I can't remove change.Part.Model, because that is a clone } _parts.Single(o => o.Contains(actualPart)).Remove(actualPart); // Give it back to the tab control AddPartToTabCtrl(actualPart); } }
private void UndoRedo_Add(UndoRedoAddRemove[] items, bool isAllLayers) { if (isAllLayers) { ChangeLayer(-1, true); } foreach (UndoRedoAddRemove item in items) { if (!isAllLayers) { ChangeLayer(item.LayerIndex, true); } DesignPart clonedPart = item.Part.Clone(); clonedPart.Part3D.Token = item.Token; _viewport.Children.Add(clonedPart.Model); _parts[item.LayerIndex].Add(clonedPart); RemovePartFromTabCtrl(clonedPart); } }