Пример #1
0
        public static void SpTop(Entity ent)
        {
            Autocad.Init();

            var sset  = SSGet();
            var table = new Specification();

            Action <BlockReference> ProcessBref = null;

            ProcessBref = (bref) => {
                List <BlockReference> innerBlocks = new List <BlockReference>();
                Record r = GetContent(bref, innerBlocks);
                if (r["block_name"].StringValue.StartsWith("__"))
                {
                    table.Add(r);
                    return;
                }
                if (!r["block_name"].StringValue.StartsWith("_"))
                {
                    table.Add(r);
                }
                foreach (BlockReference b in innerBlocks)
                {
                    ProcessBref(b);
                }
            };

            SSForeach <BlockReference>(sset, ProcessBref);

            var report = new DwgTableReport(table);

            report.Save();
            Ed.WriteMessage("OK");
        }
        private void DrawPoint(Point3d a)
        {
            DBPoint b = new DBPoint(a);

            Ed.WriteMessage("selamın aleyküm");
            AppendEntity(Db.BlockTableId, b);
        }
Пример #3
0
        public static void SpAllF(Entity ent)
        {
            Autocad.Init();

            var sset = SSGet();
            var spec = new Specification();

            Action <BlockReference> ProcessBref = null;

            ProcessBref = (bref) => {
                List <BlockReference> innerBlocks = new List <BlockReference>();
                Record r = GetContent(bref, innerBlocks);
                if (!r["block_name"].StringValue.StartsWith("_") && !r["art"].StringValue.StartsWith("REF"))
                {
                    spec.Add(r);
                }
                foreach (BlockReference b in innerBlocks)
                {
                    ProcessBref(b);
                }
            };

            SSForeach <BlockReference>(sset, ProcessBref);

            var report = new CsvReport(spec);

            report.Save();
            Ed.WriteMessage("OK");
        }
        public string[] OpenFiles()
        {
            OpenFileDialog ofd = new OpenFileDialog("XML dosyasını seçiniz..", "xml", "xml", "dialog", OpenFileDialog.OpenFileDialogFlags.AllowMultiple);



            if (ofd.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            {
                return(null);
            }
            Ed.WriteMessage("\nFile selected was \"{0}\".",
                            ofd.Filename
                            );
            return(ofd.GetFilenames());
        }
Пример #5
0
        public static void Paste()
        {
            Init();
            if (ToCopy == null || ToCopy.Count == 0)
            {
                Ed.WriteMessage("\nБуфер пустой! Сначала нужно скопировать зоны покраски!");
                return;
            }

            Base = Ed.GetPointWCS("Базовая точка");

            // Группировка зон покраски по параметрам длины и высоты
            var sizeGroups = ToCopy.GroupBy(c => new { c.Length, c.Height });

            using (var t = Db.TransactionManager.StartTransaction())
            {
                // Получение определения блока зоны в текущем чертеже.
                ObjectId idBtrColorArea = GetColorAreaIdBtr();
                var      cs             = Db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;

                // Создание всех слоев для зон покраски
                checkLayers();

                // Создание блока шаблона для каждого типоразмера зон покраски
                foreach (var size in sizeGroups)
                {
                    var idBlRefTemplate = GetBlRefTemplate(size.Key.Length, size.Key.Height, idBtrColorArea, cs, t);
                    var idColToCopy     = new ObjectIdCollection(new[] { idBlRefTemplate });
                    foreach (var item in size)
                    {
                        copyItem(item, idColToCopy, cs.Id, t);
                    }
                    // Удаление блока шаблона
                    var blRefTemplate = idBlRefTemplate.GetObject(OpenMode.ForWrite) as BlockReference;
                    blRefTemplate.Erase();
                }
                t.Commit();
            }
            Ed.WriteMessage($"\nВставлено {ToCopy.Count} блоков зон покраски.");
        }
        public void CreateLayer(string layerName)
        {
            using (Transaction ts = Db.TransactionManager.StartTransaction())
            {
                LayerTable lt = ts.GetObject(Db.LayerTableId, OpenMode.ForWrite) as LayerTable;
                try
                {
                    // Validate the provided symbol table name

                    SymbolUtilityServices.ValidateSymbolName(layerName, false);
                    // Only set the layer name if it isn't in use

                    if (lt.Has(layerName))
                    {
                        Ed.WriteMessage(
                            "\nA layer with this name already exists."
                            );
                    }
                    else
                    {
                        LayerTableRecord ltr = new LayerTableRecord();
                        ltr.Name = layerName;
                        lt.UpgradeOpen();
                        ObjectId ltId = lt.Add(ltr);
                        ts.AddNewlyCreatedDBObject(ltr, true);
                        ts.Commit();
                    }
                }
                catch
                {
                    // An exception has been thrown, indicating the
                    // name is invalid

                    Ed.WriteMessage(
                        "\nInvalid layer name."
                        );
                }
            }
        }
Пример #7
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} блоков зон покраски.");
        }
        public List <BaseC3dObject> GetObjects(string question)
        {
            Ed.WriteMessage(question);
            //Objeleri Seçmece ve Listeye Atmaca
            PromptSelectionOptions opt   = new PromptSelectionOptions();
            PromptSelectionResult  res   = Ed.GetSelection(opt);
            SelectionSet           SS    = res.Value;
            List <BaseC3dObject>   oList = new List <BaseC3dObject>();

            ////////////////////////////////////////----OBJE SEÇMECE ----- ///////////////////////////////
            // seçilmiş objeleri BASEC3D objesine çevir
            if (res.Status == PromptStatus.OK)
            {
                foreach (SelectedObject item in SS)
                {
                    BaseC3dObject bobject = new BaseC3dObject();
                    bobject.Id   = item.ObjectId;
                    bobject.Name = item.ObjectId.ObjectClass.DxfName;
                    oList.Add(bobject);
                }
            }

            return(oList);
        }
Пример #9
0
 public static void BBox()
 {
     SSForeach <Entity>(SSGet(),
                        ent => Ed.WriteMessage(GetBoundingBox(ent)));
 }
Пример #10
0
        /// <summary>
        /// Расчет машиномест выбранных блоков линейных парковок
        /// </summary>
        public void CalcAndTable()
        {
            Doc = Application.DocumentManager.MdiActiveDocument;
            Db  = Doc.Database;
            Ed  = Doc.Editor;

            var parkings = Select();

            if (parkings.Count == 0)
            {
                Ed.WriteMessage($"\nБлоки парковок не найдены.");
                return;
            }

            // Расчет машиномест для каждой парковки
            foreach (var parking in parkings)
            {
                parking.Calc();
            }

            // Суммирование парковок
            Data = new ParkingData(parkings);
            Data.Calc();

            if (Data.Places == 0 && Data.InvalidPlaces == 0)
            {
                Ed.WriteMessage("\nНет парковочных мест");
                return;
            }

            // Вставка таблицы
            if (IsTableOrText)
            {
                ParkingTable table = new ParkingTable(this);
                table.CreateTable();
            }
            else
            {
                using (var t = Db.TransactionManager.StartTransaction())
                {
                    // Вставка текста
                    DBText text = new DBText();
                    text.SetDatabaseDefaults();
                    text.Height = 2.5 * AcadLib.Scale.ScaleHelper.GetCurrentAnnoScale(Db);

                    // стиль текста
                    text.TextStyleId = Db.GetTextStylePIK();

                    string mm = string.Empty;
                    if (Data.Places != 0)
                    {
                        mm = $"{Data.Places} м/м ";
                    }
                    if (Data.InvalidPlaces != 0)
                    {
                        mm += $"({Data.InvalidPlaces} ММГН)";
                    }
                    text.TextString = mm;
                    Point3d ptText = Point3d.Origin;
                    text.Position = ptText;
                    text.LayerId  = ParkingHelper.LayerTextId;

                    var ms = Db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
                    ms.AppendEntity(text);
                    t.AddNewlyCreatedDBObject(text, true);

                    PromptSelectionResult prs = Ed.SelectLast();
                    if (prs.Status == PromptStatus.OK)
                    {
                        PromptPointResult ppr = Ed.Drag(prs.Value, "\nТочка вставки текста:", (Point3d pt, ref Matrix3d mat) =>
                        {
                            pt = pt.TransformBy(Ed.CurrentUserCoordinateSystem);
                            if (ptText == pt)
                            {
                                return(SamplerStatus.NoChange);
                            }
                            mat = Matrix3d.Displacement(ptText.GetVectorTo(pt));
                            text.TransformBy(mat);
                            ptText = pt;
                            return(SamplerStatus.OK);
                        });
                        if (ppr.Status != PromptStatus.OK)
                        {
                            text.Erase();
                        }
                    }
                    t.Commit();
                }
            }
        }