Example #1
0
        public void AKR_AutoGenerateMountPlans()
        {
            doc = Application.DocumentManager.MdiActiveDocument;
            db  = doc.Database;
            ed  = doc.Editor;

            PluginStatisticsHelper.AddStatistic();

            // Проверка - не должно быть определено блоков монтажек в файле
            CheckFileHasAnyMountBlock();

            List <Workspace> wsList;
            List <Axis>      axisList;
            List <ObjectId>  elemList;
            RTree <object>   treeElementsInWs;

            // Определение блоков - раб областей, панелей, осей
            DefineBlocks(out wsList, out axisList, out elemList, out treeElementsInWs);

            // Распределение элементов по рабочим областям
            DefineElemInWS(ref wsList, treeElementsInWs);

            // Проверка уникальности рабочих областей
            CheckUniqueWS(wsList);

            // Создание блоков монтажных планов
            var idsMountFloorsBlRefs = CreateMountingPlanBlocks(wsList);

            // Создание сборок монтажек
            UtilsPlanBlocksTogether.AKR_CollectMountPlansTogether(idsMountFloorsBlRefs);
        }
Example #2
0
        /// <summary>
        /// Отчеты по всем точкам
        /// </summary>
        public void InsPointReportsAll()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;

            if (doc == null)
            {
                return;
            }
            var db = doc.Database;

            using (doc.LockDocument())
            {
                var tables = new List <Entity>();
                foreach (var item in Points)
                {
                    var report = new InsPointReport(item, doc.Database);
                    report.CalcRows();
                    var table = report.Create();
                    tables.Add(table);
                }
                // вставка таблиц
                doc.Editor.Drag(tables, 150);
                PluginStatisticsHelper.AddStatistic();
            }
        }
Example #3
0
        /// <summary>
        /// Отчет по точке - вставка таблицы отчета
        /// </summary>
        public void InsPointReport()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;

            if (doc == null)
            {
                return;
            }
            using (doc.LockDocument())
            {
                var report = new InsPointReport(this, doc.Database);
                report.CalcRows();
                var table = report.Create();
                report.Insert(table, doc);
                PluginStatisticsHelper.AddStatistic();
            }
        }
Example #4
0
 /// <summary>
 /// Добавление новой площадки
 /// </summary>
 private void InsAddPlaceExecute()
 {
     try
     {
         var selPlace = new SelectPlace();
         var placeId  = selPlace.Select();
         if (!placeId.IsValidEx())
         {
             return;
         }
         var place = Place.AddPlace(placeId);
         if (place != null)
         {
             place.IsVisualPlaceOn = true;
         }
         // Запись статистики
         PluginStatisticsHelper.AddStatistic();
     }
     catch (Exception ex)
     {
         InsService.ShowMessage(ex, "Ошибка");
     }
 }
Example #5
0
        private void InsAddFrontExecute()
        {
            // Выбор области на чертеже
            var       selectGroup = new SelectGroup(Front.Model.Doc);
            Extents3d selReg;

            try
            {
                selReg = selectGroup.Select();
            }
            catch
            {
                return;
            }

            // Проверка, что в указанной области есть свободные дома
            if (!Front.Model.Map.Houses.GetHousesInExtents(selReg).Any(h => h.FrontGroup == null))
            {
                // В области новой группы не должно быть домов из других групп
                InsService.ShowMessage($"В выбранной области нет домов не входящих в другие группы.", System.Windows.MessageBoxImage.Error);
                return;
            }

            // Создание группы фронтонов
            try
            {
                var frontGroup = FrontGroup.New(selReg, Front);
                Front.AddGroup(frontGroup);
                // Запись статистики
                PluginStatisticsHelper.AddStatistic();
            }
            catch (Exception ex)
            {
                InsService.ShowMessage(ex, "Ошибка при создании группы фронтонов.");
            }
        }
Example #6
0
 private void InsAddPointExecute()
 {
     try
     {
         // Выбор точки на чертеже и задание параметров окна
         var      selPt = new SelectPoint();
         InsPoint p     = selPt.SelectNewPoint(Tree.Model);
         if (p != null)
         {
             // Расчет и добавление точки
             Tree.AddPoint(p);
             // Включение зон инсоляции точки
             p.IsVisualIllumsOn = true;
             // Сохранение точки
             p.SaveInsPoint();
             // Запись статистики
             PluginStatisticsHelper.AddStatistic();
         }
     }
     catch (Exception ex)
     {
         InsService.ShowMessage(ex, "Ошибка");
     }
 }
        public static void AKR_CollectMountPlansTogether(IEnumerable <ObjectId> ids = null)
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db  = doc.Database;
            Editor   ed  = doc.Editor;

            // Выбор блоков
            if (ids == null)
            {
                ids = ed.SelectBlRefs("\nВыбор блоков:").ToArray();
                PluginStatisticsHelper.AddStatistic();
            }
            //// Точка соединения всех блоков (точка вставки).
            //var ptInsert = ed.GetPointWCS("\nТочка вставки:");

            using (var t = db.TransactionManager.StartTransaction())
            {
                var cs = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
                var mountBlRefsBySections = new List <FloorMounting>();
                AcadLib.Layers.LayerExt.CheckLayerState(SymbolUtilityServices.LayerZeroName);
                foreach (var idBlRef in ids)
                {
                    if (!idBlRef.IsValidEx())
                    {
                        continue;
                    }
                    var blRef = idBlRef.GetObject(OpenMode.ForRead, false, true) as BlockReference;
                    if (blRef == null)
                    {
                        continue;
                    }
                    if (blRef.Name.StartsWith(Settings.Default.BlockPlaneMountingPrefixName))
                    {
                        var floorMount = new FloorMounting(blRef, null);
                        floorMount.DefineStorey(null);
                        mountBlRefsBySections.Add(floorMount);
                    }
                }

                // Группировка монтажных планов по x
                var idsBlRefMount      = new List <ObjectId>();
                var groupMountPlansByX = mountBlRefsBySections.GroupBy(g => g.PosBlMounting.X, new AcadLib.Comparers.DoubleEqualityComparer(30000));
                var pt = Point3d.Origin;
                foreach (var mountsByX in groupMountPlansByX)
                {
                    foreach (var mount in mountsByX)
                    {
                        // вставка нового вхождения этого блока
                        var blRefNew = new BlockReference(pt, mount.IdBtrMounting);
                        blRefNew.Layer = SymbolUtilityServices.LayerZeroName;
                        cs.AppendEntity(blRefNew);
                        t.AddNewlyCreatedDBObject(blRefNew, true);
                        idsBlRefMount.Add(blRefNew.Id);
                    }
                    pt = new Point3d(pt.X + mountsByX.Max(m => m.Extents.Diagonal()) + 50000, pt.Y, pt.Z);
                }
                ed.Drag(idsBlRefMount.ToArray(), Point3d.Origin);

                t.Commit();
            }
        }
Example #8
0
 private void InsPlaceDrawVisuals()
 {
     Place.DrawVisuals();
     PluginStatisticsHelper.AddStatistic();
 }
Example #9
0
 /// <summary>
 /// Рисование визуализации в чертеже
 /// </summary>
 private void InsFrontDrawVisuals()
 {
     Front.DrawVisuals();
     PluginStatisticsHelper.AddStatistic();
 }
Example #10
0
 private void InsFrontExportExecute()
 {
     // Экспорт фронтов инсоляции
     Front.Export();
     PluginStatisticsHelper.AddStatistic();
 }
Example #11
0
 /// <summary>
 /// Рисование визуализации в чертеже
 /// </summary>
 private void InsTreesDrawVisuals()
 {
     Tree.DrawVisuals();
     PluginStatisticsHelper.AddStatistic();
 }