示例#1
0
        private List <LayerState> ActivateLayers()
        {
            var layersToRevert = new List <LayerState>();
            var layers         = GetLayers();

            if (layers.Count == 0)
            {
                return(layersToRevert);
            }

            //Need a transaction, not sure where else it could come from.
            using (var acTrans = AcCurDb.TransactionManager.StartTransaction())
            {
                foreach (var layerObj in layers)
                {
                    if (layerObj is LayerAttribute layerAttribute)
                    {
                        var layer = AcCurDb.GetLayer(layerAttribute.Name);
                        if (layer == null)
                        {
                            // TODO: Redo this to use pull the correct name from the layer manager
                            _log.LogError($"Layer {layerAttribute.Name} not found when attempting to save state.");
                            continue;
                        }

                        var status = new LayerState(layer);

                        if (status.IsInvalid)
                        {
                            layersToRevert.Add(status);

                            if (ShouldUnlockUnfreeze || ShouldSwitchOn)
                            {
                                layer.UpgradeOpen();

                                if (ShouldUnlockUnfreeze)
                                {
                                    layer.IsLocked = false;
                                    layer.IsFrozen = false;
                                }

                                if (ShouldSwitchOn)
                                {
                                    layer.IsOff = false;
                                }
                            }
                        }
                    }
                }

                acTrans.Commit();
            }

            return(layersToRevert);
        }
示例#2
0
        public void RegenerateManagers()
        {
            AcCurDb.DisableUndoRecording(true);

            foreach (IDrawingObjectManager drawingObjectManager in Managers)
            {
                drawingObjectManager.UpdateAll();
            }

            AcCurDb.DisableUndoRecording(false);
        }
示例#3
0
        private void RevertLayers(IReadOnlyCollection <LayerState> layers)
        {
            if (layers.Count == 0)
            {
                return;
            }

            //Need a transaction, not sure where else it could come from.
            using (var acTrans = AcCurDb.TransactionManager.StartTransaction())
            {
                foreach (var revert in layers)
                {
                    var layer = AcCurDb.GetLayer(revert.Name);

                    layer.UpgradeOpen();
                    layer.IsLocked = revert.IsLocked;
                    layer.IsFrozen = revert.IsFrozen;
                    layer.IsOff    = revert.IsOff;
                }

                acTrans.Commit();
            }
        }