public void CloseAndDelete(List <PanelAKR> panelsToDelete) { string file = dbLib.Filename; try { dbLib.Dispose(); } catch { } File.Delete(file); // Удаление блоков if (panelsToDelete != null && panelsToDelete.Count > 0) { // Сделать копию библиотеки PanelLibrarySaveService.BackUpLibPanelsFile(); using (ProgressMeter progress = new ProgressMeter()) { progress.SetLimit(panelsToDelete.Count); progress.Start($"Удаление {panelsToDelete.Count} панелей из библиотеки..."); using (var db = new Database(false, true)) { db.ReadDwgFile(PanelLibrarySaveService.LibPanelsFilePath, FileShare.None, true, ""); db.CloseInput(true); using (var t = db.TransactionManager.StartTransaction()) { var bt = db.BlockTableId.GetObject(OpenMode.ForRead) as BlockTable; foreach (var item in panelsToDelete) { if (bt.Has(item.BlName)) { var idPanelAkr = bt[item.BlName]; var dbo = idPanelAkr.GetObject(OpenMode.ForWrite); try { dbo.Erase(); progress.MeterProgress(); } catch { }; } } t.Commit(); } db.SaveAs(PanelLibrarySaveService.LibPanelsFilePath, DwgVersion.Current); } Logger.Log.Error($"Удалены панели АКР из библиотеки - {panelsToDelete.Count}шт.: {string.Join(", ",panelsToDelete)}"); progress.Stop(); } } }
public void AKR_SavePanelsToLibrary() { CommandStart.Start(doc => { using (var lockDoc = doc.LockDocument()) { PanelLibrarySaveService panelLib = new PanelLibrarySaveService(); panelLib.SavePanelsToLibrary(); } }); }
public static void ShowPanelsByHeight() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; List <PanelAkrFacade> panelsAkr; using (var t = db.TransactionManager.StartTransaction()) { panelsAkr = PanelLibrarySaveService.GetPanelsAkrInDb(db); foreach (var item in panelsAkr) { item.DefineGeom(item.IdBtrAkrPanel); } t.Commit(); } ViewNavigator model = new ViewNavigator(panelsAkr); WindowNavigator win = new WindowNavigator(model); Application.ShowModelessWindow(win); }