/// <summary>
        /// Ensures a layer is visible.
        /// </summary>
        /// <param name="layerName">The layer name.</param>
        public static void EnsureLayerOn(string layerName)
        {
            var id = DbHelper.GetLayerId(layerName);

            id.QOpenForWrite <LayerTableRecord>(layer =>
            {
                layer.IsFrozen = false;
                layer.IsHidden = false;
                layer.IsOff    = false;
            });
        }
Beispiel #2
0
        public static void ShowLayerName()
        {
            double height = 10;

            string[] range  = { "By entities", "By layers" };
            int      result = Gui.GetOption("Choose one way", range);

            if (result == -1)
            {
                return;
            }
            ObjectId[] ids;
            if (result == 0)
            {
                ids = Interaction.GetSelection("\nSelect entities");
                ids
                .QWhere(entity => !entity.Layer.Contains("_Label"))
                .QSelect(entity => entity.Layer)
                .Distinct()
                .Select(layer => $"{layer}_Label")
                .ForEach(labelLayer => DbHelper.GetLayerId(labelLayer));
            }
            else
            {
                var    layers    = DbHelper.GetAllLayerNames().Where(layer => !layer.Contains("_Label")).ToArray();
                string layerName = Gui.GetChoice("Select a layer", layers);
                ids = QuickSelection
                      .SelectAll(FilterList.Create().Layer(layerName))
                      .ToArray();

                DbHelper.GetLayerId($"{layerName}_Label");
            }

            List <string> layerNames = new List <string>();

            var texts = new List <MText>();

            ids.QForEach <Entity>(entity =>
            {
                string layerName = entity.Layer;
                layerNames.Add(layerName);
                if (!layerName.Contains("_Label"))
                {
                    var center = entity.GetCenter();
                    var text   = NoDraw.MText(layerName, height, center, 0, true);
                    text.Layer = $"{layerName}_Label";
                    texts.Add(text);
                }
            });
            //int result2 = Gui.GetOption("Layernames", layerNames.ToArray());
            texts.ToArray().AddToCurrentSpace();
        }
 /// <summary>
 /// Sets the current layer.
 /// </summary>
 /// <param name="layerName">The layer name.</param>
 public static void SetCurrentLayer(string layerName)
 {
     HostApplicationServices.WorkingDatabase.Clayer = DbHelper.GetLayerId(layerName);
 }