Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }