Ejemplo n.º 1
0
 public ConvertEndsFacade(IGrouping<double, PanelBlRefExport> itemLefEndsByY, bool isLeftSide, ConvertPanelService cps)
 {
     this.itemLefEndsByY = itemLefEndsByY;
     this.sideName = isLeftSide ? "левый" : "правый";
     this.isLeftSide = isLeftSide;
     CPS = cps;
 }
Ejemplo n.º 2
0
 public ConvertEndsFacade(IGrouping <double, PanelBlRefExport> itemLefEndsByY, bool isLeftSide, ConvertPanelService cps)
 {
     this.itemLefEndsByY = itemLefEndsByY;
     this.sideName       = isLeftSide ? "левый" : "правый";
     this.isLeftSide     = isLeftSide;
     CPS = cps;
 }
Ejemplo n.º 3
0
 public PanelBtrExport(ObjectId idBtrAkr, ConvertPanelService cps)
 {
     CPS                 = cps;
     IdBtrAkr            = idBtrAkr;
     Panels              = new List <PanelBlRefExport>();
     IdsEndsLeftEntity   = new List <ObjectId>();
     IdsEndsRightEntity  = new List <ObjectId>();
     IdsEndsTopEntity    = new List <ObjectId>();
     IdsEndsBottomEntity = new List <ObjectId>();
     EntInfos            = new List <EntityInfo>();
     Tiles               = new List <Tuple <ObjectId, Extents3d> >();
 }
        /// <summary>
        /// Экспорт фасада для АР
        /// </summary>
        public void Export()
        {
            // Список панелей для экспорта
            SelectPanels = new SelectionBlocks();
            SelectPanels.SelectBlRefsInModel(false);
            if (SelectPanels.IdsBlRefPanelSb.Count > 0)
            {
                Inspector.AddError("В текущем чертеже в Модели не должно быть панелей Марки СБ (только Марки АР).", icon: System.Drawing.SystemIcons.Error);
                return;
            }
            if (SelectPanels.IdsBlRefPanelAr.Count == 0)
            {
                Inspector.AddError("Не найдены панели Марки АР в Моделе текущего чертежа.", icon: System.Drawing.SystemIcons.Error);
                return;
            }

            // Определить файл в который экспортировать фасад
            _fileExport = new FileExport();
            _fileExport.DefineFile();

            // определение фасадов (вокруг панелей АКР)
            var facades = Facade.GetFacades(SelectPanels.FacadeBlRefs);

            // Определение экспортируемых панелей и фасадов
            CPS = new ConvertPanelService(this);
            CPS.DefinePanels(facades);

            using (var dbExport = new Database(!_fileExport.IsExistsFileExport, true))
            {
                if (_fileExport.IsExistsFileExport)
                {
                    // удалить старые панели из файла экспорта
                    try
                    {
                        dbExport.ReadDwgFile(_fileExport.FileExportFacade.FullName, FileShare.Read, true, "");
                    }
                    catch (Exception ex)
                    {
                        // файл занят.
                        warningMessageBusyFileExportFacade(ex, _fileExport.FileExportFacade.FullName);
                        throw;
                    }
                    // сделать копию файла
                    _fileExport.Backup();
                    dbExport.CloseInput(true);
                    deletePanels(dbExport);
                }
                dbExport.CloseInput(true);
                CPS.DbExport = dbExport;

                // Копирование панелей АР в экспортный файл
                copyPanelToExportFile(dbExport);

                // Переопределение блока плитки из файла шаблона блоков для Экспорта фасадов.
                redefineBlockTile(dbExport);

                using (AcadLib.WorkingDatabaseSwitcher switchDb = new AcadLib.WorkingDatabaseSwitcher(dbExport))
                {
                    using (var t = dbExport.TransactionManager.StartTransaction())
                    {
                        // Преобразования определений блоков
                        CPS.ConvertBtr();

                        // Преобразования торцов фасадов
                        CPS.ConvertEnds();

                        t.Commit();
                    }
                }
                CPS.Purge();

                dbExport.SaveAs(_fileExport.FileExportFacade.FullName, DwgVersion.Current);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Экспорт фасада для АР
        /// </summary>
        public void Export()
        {
            // Список панелей для экспорта
            SelectPanels = new SelectionBlocks();
            SelectPanels.SelectBlRefsInModel(false);
            if (SelectPanels.IdsBlRefPanelSb.Count > 0)
            {
                Inspector.AddError("В текущем чертеже в Модели не должно быть панелей Марки СБ (только Марки АР).", icon: System.Drawing.SystemIcons.Error);
                return;
            }
            if (SelectPanels.IdsBlRefPanelAr.Count == 0)
            {
                Inspector.AddError("Не найдены панели Марки АР в Моделе текущего чертежа.", icon: System.Drawing.SystemIcons.Error);
                return;
            }

            // Определить файл в который экспортировать фасад
            _fileExport = new FileExport();
            _fileExport.DefineFile();

            // определение фасадов (вокруг панелей АКР)
            var facades = Facade.GetFacades(SelectPanels.FacadeBlRefs);

            // Определение экспортируемых панелей и фасадов
            CPS = new ConvertPanelService(this);
            CPS.DefinePanels(facades);

            using (var dbExport = new Database(!_fileExport.IsExistsFileExport, true))
            {
                if (_fileExport.IsExistsFileExport)
                {
                    // удалить старые панели из файла экспорта
                    try
                    {
                        dbExport.ReadDwgFile(_fileExport.FileExportFacade.FullName, FileShare.Read, true, "");
                    }
                    catch (Exception ex)
                    {
                        // файл занят.
                        warningMessageBusyFileExportFacade(ex, _fileExport.FileExportFacade.FullName);
                        throw;
                    }
                    // сделать копию файла
                    _fileExport.Backup();
                    dbExport.CloseInput(true);
                    deletePanels(dbExport);
                }
                dbExport.CloseInput(true);
                CPS.DbExport = dbExport;

                // Копирование панелей АР в экспортный файл
                copyPanelToExportFile(dbExport);

                // Переопределение блока плитки из файла шаблона блоков для Экспорта фасадов.
                redefineBlockTile(dbExport);

                using (AcadLib.WorkingDatabaseSwitcher switchDb = new AcadLib.WorkingDatabaseSwitcher(dbExport))
                {
                    using (var t = dbExport.TransactionManager.StartTransaction())
                    {
                        // Преобразования определений блоков
                        CPS.ConvertBtr();

                        // Преобразования торцов фасадов
                        CPS.ConvertEnds();

                        t.Commit();
                    }
                }
                CPS.Purge();

                dbExport.SaveAs(_fileExport.FileExportFacade.FullName, DwgVersion.Current);
            }
        }