public void BaseApartmentsContourRemove() { Logger.Log.Info("Start command AR-BaseApartmentsContourRemove"); Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return; } Editor ed = doc.Editor; try { Inspector.Clear(); var sel = ed.SelectBlRefs("Выбери квартиры"); var apartments = Apartment.GetApartments(sel); Model.AcadServices.ContourHelper.ClearOldContourAll(apartments); } catch (System.Exception ex) { doc.Editor.WriteMessage($"\nОшибка : {ex.Message}"); if (!ex.Message.Contains(AcadLib.General.CanceledByUser)) { Logger.Log.Error(ex, $"Command: AR-BaseApartmentsContourRemove. {doc.Name}"); } } }
public void BaseApartmentsSetTypeFlats() { Logger.Log.Info("Start command AR-BaseApartmentsSetTypeFlats"); Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return; } Editor ed = doc.Editor; Database db = doc.Database; try { Inspector.Clear(); var sel = ed.SelectBlRefs("Выбери квартиры"); var apartments = Apartment.GetApartments(sel); RoomsTypeEditor.SetRoomsType(apartments); ed.WriteMessage($"\nПараметры записаны."); Inspector.Show(); } catch (System.Exception ex) { doc.Editor.WriteMessage($"\nОшибка : {ex.Message}"); if (!ex.Message.Contains(AcadLib.General.CanceledByUser)) { Logger.Log.Error(ex, $"Command: AR-BaseApartmentsSetTypeFlats. {doc.Name}"); } } }
public void BaseApartmentsContour() { Logger.Log.Info("Start command AR-BaseApartmentsContour"); Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return; } Editor ed = doc.Editor; try { Inspector.Clear(); var sel = ed.SelectBlRefs("Выбери квартиры"); var apartments = Apartment.GetApartments(sel); Model.AcadServices.ContourHelper.CreateContours2(apartments); Inspector.Show(); } catch (System.Exception ex) { doc.Editor.WriteMessage($"\nОшибка : {ex.Message}"); if (!ex.Message.Contains("Отменено пользователем")) { Logger.Log.Error(ex, $"Command: AR-BaseApartmentsContour. {doc.Name}"); } } }
public void BaseApartmentsExport() { Logger.Log.Info("Start command AR-BaseApartmentsExport"); Document doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return; } // Проверка допуска пользователя if (!AccessUsers.HasAccess()) { doc.Editor.WriteMessage("\nОтказано в доступе"); return; } if (!File.Exists(doc.Name)) { doc.Editor.WriteMessage("\nНужно сохранить текущий чертеж."); return; } try { Inspector.Clear(); Database db = doc.Database; Editor ed = doc.Editor; ExportApartmentsAbout(); Parameter.BlocksConstantAtrs = new Dictionary <ObjectId, List <Parameter> >(); // Проверка дубликатов блоков CheckDublicateBlocks.Tolerance = new Autodesk.AutoCAD.Geometry.Tolerance(0.02, 15); CheckDublicateBlocks.Check(new HashSet <string>() { "RV_EL_BS_Базовая стена", "RV_EL_BS_Вентиляционный блок" }); // Создание папки для экспорта подложек квуартир DefineDirExportFilesApartments(db); // Считывание блоков квартир из чертежа var apartments = Apartment.GetApartments(db); if (apartments.Count == 0) { throw new System.Exception($"Блоки квартир не найдены. Имя блока квартиры должно соответствовать условию Match = '{Options.Instance.BlockApartmentNameMatch}'"); } ed.WriteMessage($"\nВ Модели найдено {apartments.Count} блоков квартир."); Inspector.ShowDialog(); Inspector.Clear(); // Квартиры в базе var apartmentsInBase = GetBaseApartments.GetAll(); //Проверка всех элементов квартир в базе - категории, параметры. CheckApartments.Check(apartments, apartmentsInBase); // Сортировка квартир, модулей и элементов var alphaComparer = AcadLib.Comparers.AlphanumComparator.New; apartments.Sort((a1, a2) => a1.Name.CompareTo(a2.Name)); apartments.ForEach(a => { a.Modules.Sort((m1, m2) => m1.Name.CompareTo(m2.Name)); a.Modules.ForEach(m => m.Elements.Sort((e1, e2) => alphaComparer.Compare(e1.NodeName, e2.NodeName))); }); // Форма предпросмотра экспорта блоков FormBlocksExport formExport = new FormBlocksExport(apartments); var dlgRes = Application.ShowModalDialog(formExport); // Прервать if (dlgRes == System.Windows.Forms.DialogResult.Abort) { formExport.SetModaless(); Application.ShowModelessDialog(formExport); throw new System.Exception(AcadLib.General.CanceledByUser); } if (dlgRes == System.Windows.Forms.DialogResult.OK) { // Экспорт блоков в файлы var count = Apartment.ExportToFiles(apartments); ed.WriteMessage($"\nЭкспортированно '{count}' квартир в отдельные файлы."); // Выбор квартир записываемых в базу - изменившиеся и новые var apartsToDb = apartments.Where (a => !a.BaseStatus.HasFlag(EnumBaseStatus.Error) && !a.BaseStatus.HasFlag(EnumBaseStatus.NotInDwg) && ( a.BaseStatus.HasFlag(EnumBaseStatus.Changed) || a.BaseStatus.HasFlag(EnumBaseStatus.New) || a.Modules.Any(m => !m.BaseStatus.HasFlag(EnumBaseStatus.Error) && ( m.BaseStatus.HasFlag(EnumBaseStatus.Changed) || m.BaseStatus.HasFlag(EnumBaseStatus.New) )) )).ToList(); //var apartsNotToDB = apartments.Except(apartsToDb); //foreach (var apartNotToDB in apartsNotToDB) //{ // ed.WriteMessage($"\nКвартира не будет записана в базу, статус '{apartNotToDB.BaseStatus}' - '{apartNotToDB.Name}'."); //} //// Запись квартир в xml //string fileXml = Path.Combine(Path.GetDirectoryName(doc.Name), Path.GetFileNameWithoutExtension(doc.Name) + ".xml"); //Apartment.ExportToXML(fileXml, apartmentsToExport); // Запись в DB try { BaseApartments.Export(apartsToDb); } catch (System.Exception ex) { Inspector.AddError($"Ошибка экспорта в БД - {ex.Message}", icon: System.Drawing.SystemIcons.Error); } // Запись лога экспортированных блоков string logFile = Path.Combine(Path.GetDirectoryName(doc.Name), Options.Instance.LogFileName); ExcelLog excelLog = new ExcelLog(logFile); excelLog.AddtoLog(apartments); // Показ ошибок Inspector.Show(); } } catch (System.Exception ex) { doc.Editor.WriteMessage($"\nОшибка экспорта блоков: {ex.Message}"); if (!ex.Message.Contains(AcadLib.General.CanceledByUser)) { Logger.Log.Error(ex, $"Command: AR-BaseApartmentsExport. {doc.Name}"); } } }