예제 #1
0
        public static ObjectId CheckLayerState(this LayerInfo layer, bool checkProps)
        {
            var layers = new List <LayerInfo> {
                layer
            };
            var dictLays = CheckLayerState(layers, checkProps);

            return(dictLays.First().Value);
        }
예제 #2
0
        public static ObjectId CheckLayerState([NotNull] string layer)
        {
            var li         = new LayerInfo(layer);
            var layersInfo = new List <LayerInfo> {
                li
            };
            var dictLays = CheckLayerState(layersInfo);

            dictLays.TryGetValue(layer, out var res);
            return(res);
        }
예제 #3
0
        public static ObjectId GetLayerOrCreateNew([NotNull] this LayerInfo layerInfo)
        {
            ObjectId idLayer;
            var      db = HostApplicationServices.WorkingDatabase;

            // Если уже был создан слой, то возвращаем его. Опасно, т.к. перед повторным запуском команды покраски, могут удалить/переименовать слой марок.
            using var lt = (LayerTable)db.LayerTableId.Open(OpenMode.ForRead);
            idLayer      = lt.Has(layerInfo.Name) ? lt[layerInfo.Name] : CreateLayer(layerInfo, lt);

            return(idLayer);
        }
예제 #4
0
        public static Dictionary <string, ObjectId> CheckLayerState([NotNull] string[] layers)
        {
            var layersInfo = new List <LayerInfo>();

            foreach (var item in layers)
            {
                var li = new LayerInfo(item);
                layersInfo.Add(li);
            }

            return(CheckLayerState(layersInfo));
        }
예제 #5
0
        public static ObjectId CreateLayer([NotNull] this LayerInfo layerInfo, [NotNull] LayerTable lt)
        {
            if (layerInfo.Name.IsNullOrEmpty())
            {
                return(lt.Database.Clayer);
            }
            ObjectId idLayer;

            // Если слоя нет, то он создается.
            using var newLayer = new LayerTableRecord();
            layerInfo.SetProp(newLayer, lt.Database);
            lt.UpgradeOpen();
            idLayer = lt.Add(newLayer);
            lt.DowngradeOpen();

            return(idLayer);
        }
예제 #6
0
파일: Draw.cs 프로젝트: vildar82/AcadLib
        public static void Polyline(
            [CanBeNull] Layers.LayerInfo layer = null,
            [CanBeNull] Color color            = null,
            LineWeight?lineWeight       = null,
            [CanBeNull] string lineType = null,
            double?lineTypeScale        = null)
        {
            // Обертка запуска команды рисования полилинии с заданными свойствами.
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db  = doc.Database;

            // Вызов команды рисования полилинии
            using (new DrawParameters(db, layer, color, lineWeight, lineType, lineTypeScale))
            {
                doc.Editor.Command("_PLINE");
            }
        }
예제 #7
0
        public DrawParameters(Database db, LayerInfo layer = null, Color color = null, 
                            LineWeight? lineWeight = null, string lineType = null, double? lineTypeScale = null)
        {
            this.db = db;
            // Сохранение текущих свойств чертежа
            oldLayer = db.Clayer;
            oldColor = db.Cecolor;
            oldLineWeight = db.Celweight;
            oldLineType = db.Celtype;
            oldLineScale = db.Celtscale;

            Layer = layer;
            Color = color;
            LineWeight = lineWeight;
            LineType = lineType;
            LineTypeScale = lineTypeScale;
            // установка новых свойств чертежу
            Setup();
        }
예제 #8
0
 public static ObjectId CheckLayerState(this LayerInfo layer)
 {
     return(CheckLayerState(layer, false));
 }
예제 #9
0
 public static ObjectId CheckLayerState(string layer)
 {
     LayerInfo li = new LayerInfo(layer);
     List<LayerInfo> layersInfo = new List<LayerInfo>();
     layersInfo.Add(li);
     var dictLays = CheckLayerState(layersInfo);
     ObjectId res;
     dictLays.TryGetValue(layer, out res);
     return res;
 }
예제 #10
0
 public static Dictionary<string, ObjectId> CheckLayerState(string[] layers)
 {
     List<LayerInfo> layersInfo = new List<LayerInfo>();
     foreach (var item in layers)
     {
         LayerInfo li = new LayerInfo(item);
         layersInfo.Add(li);
     }
     return CheckLayerState(layersInfo);
 }
예제 #11
0
        public static void Copy()
        {
            Init();
            ToCopy = new List<ColorArea>();
            // Выбор блоков зон покраски.

            var idsSelect = GetSelection();
            Base = Ed.GetPointWCS("Базовая точка");
            Layers = new Dictionary<string, LayerInfo>();
            // Фильтр зон покраски
            using (var t = Db.TransactionManager.StartTransaction())
            {
                foreach (var idBlRef in idsSelect)
                {
                    var blRef = idBlRef.GetObject(OpenMode.ForRead, false, true) as BlockReference;
                    if (blRef == null) continue;
                    var blName = blRef.GetEffectiveName();
                    if (blName.Equals(Settings.Default.BlockColorAreaName, StringComparison.OrdinalIgnoreCase))
                    {
                        ColorArea ca = new ColorArea(blRef);
                        ToCopy.Add(ca);
                        // добавление слоя в словарь
                        if(!Layers.ContainsKey(blRef.Layer))
                        {
                            LayerInfo li = new LayerInfo(blRef.LayerId);
                            Layers.Add(li.Name, li);
                        }
                    }
                }
                t.Commit();
            }
            Ed.WriteMessage($"\nСкопировано {ToCopy.Count} блоков зон покраски.");
        }
 private void loadLayers()
 {
     // Слой контур панели
      IdLayerContourPanel = ExportFacade.ContourPanel.CreateLayerContourPanel();
      // Слой Окна
      var layer = new LayerInfo(Settings.Default.LayerWindows);
      IdLayerWindow = LayerExt.GetLayerOrCreateNew(layer);
      // Слой размеров на фасаде
      layer = new LayerInfo(Settings.Default.LayerDimensionFacade);
      layer.Color = Color.FromColorIndex(ColorMethod.ByLayer, 192);
      IdLayerDimFacade = LayerExt.GetLayerOrCreateNew(layer);
      // Слой размеров в форме
      layer = new LayerInfo(Settings.Default.LayerDimensionForm);
      layer.Color = Color.FromColorIndex(ColorMethod.ByLayer, 63);
      IdLayerDimForm = LayerExt.GetLayerOrCreateNew(layer);
 }