/// <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); } }