diff --git a/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetConfig.cs b/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetConfig.cs index 0d66a0e68..6f1cf1f9e 100644 --- a/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetConfig.cs +++ b/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetConfig.cs @@ -68,6 +68,7 @@ public class SheetSetData { public string Name { get; set; } = "Новая конфигурация"; public List Sheets { get; set; } = []; public List Params { get; set; } = []; + public string ParamsComment { get; set; } = string.Empty; } public abstract class ParamContainerModuleData { @@ -104,6 +105,7 @@ public class PlanViewData : SheetComponentData { public FiltrationComboBoxFilterListData ViewFamilyTypeFilterValues { get; set; } public string ViewTemplateName { get; set; } public FiltrationComboBoxFilterListData ViewTemplateFilterValues { get; set; } + public bool? ViewTemplateRemoveAfterCreation { get; set; } public string ViewportTypeName { get; set; } public FiltrationComboBoxFilterListData ViewportTypeFilterValues { get; set; } public string ViewCount { get; set; } @@ -121,6 +123,7 @@ public class CalloutViewData : SheetComponentData { public FiltrationComboBoxFilterListData ViewFamilyTypeFilterValues { get; set; } public string ViewTemplateName { get; set; } public FiltrationComboBoxFilterListData ViewTemplateFilterValues { get; set; } + public bool? ViewTemplateRemoveAfterCreation { get; set; } public string ViewportTypeName { get; set; } public FiltrationComboBoxFilterListData ViewportTypeFilterValues { get; set; } public string ViewCount { get; set; } @@ -140,6 +143,7 @@ public class SectionViewData : SheetComponentData { public FiltrationComboBoxFilterListData ViewFamilyTypeFilterValues { get; set; } public string ViewTemplateName { get; set; } public FiltrationComboBoxFilterListData ViewTemplateFilterValues { get; set; } + public bool? ViewTemplateRemoveAfterCreation { get; set; } public string ViewportTypeName { get; set; } public FiltrationComboBoxFilterListData ViewportTypeFilterValues { get; set; } public string SelectedSelectElemParamName { get; set; } diff --git a/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetDataFactory.cs b/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetDataFactory.cs index 0e59890b0..123264ce3 100644 --- a/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetDataFactory.cs +++ b/src/RevitPackageDocumentation/Models/ConfigSerializer/SheetSetDataFactory.cs @@ -41,7 +41,8 @@ public SheetSetData CreateSheetSetData(SheetSetVM vm) { return new SheetSetData { Name = vm.Name, Sheets = vm.SheetList?.Select(CreateSheetData).ToList(), - Params = vm.SheetSetParams.Params?.Select(CreatePluginParamData).ToList() + Params = vm.SheetSetParams.Params?.Select(CreatePluginParamData).ToList(), + ParamsComment = vm.SheetSetParams.ModuleComment }; } @@ -77,6 +78,7 @@ public SheetComponentData CreateComponentData(SheetComponentVM sheetComponentVM) ViewFamilyTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewFamilyTypeFilter), ViewTemplateName = vm.ViewTemplate?.Name, ViewTemplateFilterValues = GetFiltrationComboBoxFilterList(vm.ViewTemplateFilter), + ViewTemplateRemoveAfterCreation = vm.ViewTemplateRemoveAfterCreation, ViewportTypeName = vm.ViewportType?.Name, ViewportTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewportTypeFilter), ViewCount = vm.ViewCount, @@ -94,6 +96,7 @@ public SheetComponentData CreateComponentData(SheetComponentVM sheetComponentVM) ViewFamilyTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewFamilyTypeFilter), ViewTemplateName = vm.ViewTemplate?.Name, ViewTemplateFilterValues = GetFiltrationComboBoxFilterList(vm.ViewTemplateFilter), + ViewTemplateRemoveAfterCreation = vm.ViewTemplateRemoveAfterCreation, ViewportTypeName = vm.ViewportType?.Name, ViewportTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewportTypeFilter), ViewCount = vm.ViewCount, @@ -111,6 +114,7 @@ public SheetComponentData CreateComponentData(SheetComponentVM sheetComponentVM) ViewFamilyTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewFamilyTypeFilter), ViewTemplateName = vm.ViewTemplate?.Name, ViewTemplateFilterValues = GetFiltrationComboBoxFilterList(vm.ViewTemplateFilter), + ViewTemplateRemoveAfterCreation = vm.ViewTemplateRemoveAfterCreation, ViewportTypeName = vm.ViewportType?.Name, ViewportTypeFilterValues = GetFiltrationComboBoxFilterList(vm.ViewportTypeFilter), ViewCount = vm.ViewCount, diff --git a/src/RevitPackageDocumentation/Models/RevitElementPickerService.cs b/src/RevitPackageDocumentation/Models/RevitElementPickerService.cs index 4e54490a4..3b4ecd132 100644 --- a/src/RevitPackageDocumentation/Models/RevitElementPickerService.cs +++ b/src/RevitPackageDocumentation/Models/RevitElementPickerService.cs @@ -36,13 +36,20 @@ internal static RevitElementPickerService GetRevitElementPickerService( public void PickElement(Action onSelected) { _mainWindow.Hide(); - ISelectionFilter selectFilter = new FloorSelectionFilter(); - var reference = _revitRepository.ActiveUIDocument.Selection.PickObject( - ObjectType.Element, - selectFilter, - _localizationService.GetLocalizedString("MainWindow.PickElement")); - var element = _revitRepository.Document.GetElement(reference); - onSelected?.Invoke(element); - _mainWindow.ShowDialog(); + try { + // Даем пользователю выбрать объект в Revit + ISelectionFilter selectFilter = new FloorSelectionFilter(); + var reference = _revitRepository.ActiveUIDocument.Selection.PickObject( + ObjectType.Element, + selectFilter, + _localizationService.GetLocalizedString("MainWindow.PickElement")); + var element = _revitRepository.Document.GetElement(reference); + onSelected?.Invoke(element); + } catch(OperationCanceledException) { + // Пользователь нажал Esc - ничего не делаем + } finally { + // В любом случае показываем окно обратно + _mainWindow.ShowDialog(); + } } } diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/CalloutViewVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/CalloutViewVM.cs index f7ce52ff5..78860ac6b 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/CalloutViewVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/CalloutViewVM.cs @@ -5,7 +5,6 @@ using dosymep.Revit; using dosymep.SimpleServices; -using dosymep.WPF.Commands; using RevitPackageDocumentation.Models; using RevitPackageDocumentation.ViewModels.Configuration.SheetSetParameters.Parameters; @@ -14,6 +13,8 @@ namespace RevitPackageDocumentation.ViewModels.Configuration.Sheet.SheetComponents; internal class CalloutViewVM : SheetComponentVM { + private readonly string _uniqueViewportNumberKey = "‪"; + // Ширина фрагмента private readonly double _calloutWidth = UnitUtilsHelper.ConvertToInternalValue(4000); @@ -38,6 +39,7 @@ internal class CalloutViewVM : SheetComponentVM { private FiltrationComboBoxFilterListVM _viewFamilyTypeFilter; private FiltrationComboBoxFilterListVM _viewportTypeFilter; private FiltrationComboBoxFilterListVM _viewTemplateFilter; + private bool _viewTemplateRemoveAfterCreation = false; public CalloutViewVM( RevitRepository repository, @@ -46,8 +48,6 @@ public CalloutViewVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); } [Required(ErrorMessage = "Validation.ViewNameIsEmpty")] @@ -95,6 +95,11 @@ public FiltrationComboBoxFilterListVM ViewTemplateFilter { set => RaiseAndSetIfChanged(ref _viewTemplateFilter, value); } + public bool ViewTemplateRemoveAfterCreation { + get => _viewTemplateRemoveAfterCreation; + set => RaiseAndSetIfChanged(ref _viewTemplateRemoveAfterCreation, value); + } + [PositiveInteger(ErrorMessage = "Validation.ViewCountIsNotCorrect")] public string ViewCount { get => _viewCount; @@ -190,6 +195,11 @@ public View Create(int number) { // Необходимо для перезагрузки габаритов видов перед их размещением, т.к. при назначении // секущего диапазона, видимых категорий, шаблона вида могут изменяться габариты вида Repository.Document.Regenerate(); + + // Снимаем шаблон вида, если запросил пользователь + if(ViewTemplateRemoveAfterCreation) { + view.ViewTemplateId = ElementId.InvalidElementId; + } } catch(System.Exception) { } return view; } @@ -211,7 +221,6 @@ public Viewport Place(View view, int number) { double titleBlockMinX = boundingBoxXYZ.Min.X; double titleBlockMinY = boundingBoxXYZ.Min.Y; - int viewPortNumber = GetLastViewportNumber(0, 100) + 1; var lastViewport = GetLastViewport(vp => vp.GetBoxCenter().Y < 0, true); // Получение габаритов видового экрана @@ -232,8 +241,11 @@ public Viewport Place(View view, int number) { titleBlockMinY - viewportHalfHeight - _viewportOffset, 0); + string viewPortNumberAsStr = + _uniqueViewportNumberKey + (GetLastViewportNumber(_uniqueViewportNumberKey, 0, 100) + 1); + viewPort.SetBoxCenter(correctPosition); - viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumber.ToString()); + viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumberAsStr); #if REVIT_2022_OR_GREATER viewPort.LabelOffset = new XYZ(viewportHalfWidth * 0.9, viewportHalfHeight * 2, 0); diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/LegendViewVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/LegendViewVM.cs index 694b63704..b5aa9d5b5 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/LegendViewVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/LegendViewVM.cs @@ -4,7 +4,6 @@ using Autodesk.Revit.DB; using dosymep.SimpleServices; -using dosymep.WPF.Commands; using RevitPackageDocumentation.Models; using RevitPackageDocumentation.ViewModels.Configuration.SheetSetParameters.Parameters; @@ -25,8 +24,6 @@ public LegendViewVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); } [Required(ErrorMessage = "Validation.LegendViewIsNull")] diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/PlanViewVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/PlanViewVM.cs index f7b7ce83d..40da504b8 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/PlanViewVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/PlanViewVM.cs @@ -14,6 +14,8 @@ namespace RevitPackageDocumentation.ViewModels.Configuration.Sheet.SheetComponents; internal class PlanViewVM : SheetComponentVM { + private readonly string _uniqueViewportNumberKey = "‎"; + private string _viewNameFormula = string.Empty; private string _viewName; private ViewFamilyType _viewFamilyType; @@ -26,6 +28,7 @@ internal class PlanViewVM : SheetComponentVM { private FiltrationComboBoxFilterListVM _viewportTypeFilter; private FiltrationComboBoxFilterListVM _viewFamilyTypeFilter; private FiltrationComboBoxFilterListVM _viewTemplateFilter; + private bool _viewTemplateRemoveAfterCreation = false; // Смещение по горизонтали в дюймах слева, для размещаемых компонентов листа требуемое, чтобы они попали на лист private readonly double _titleBlockFrameLeftOffset = UnitUtilsHelper.ConvertToInternalValue(20); @@ -40,7 +43,6 @@ public PlanViewVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); } [Required(ErrorMessage = "Validation.ViewNameIsEmpty")] @@ -88,6 +90,11 @@ public FiltrationComboBoxFilterListVM ViewTemplateFilter { set => RaiseAndSetIfChanged(ref _viewTemplateFilter, value); } + public bool ViewTemplateRemoveAfterCreation { + get => _viewTemplateRemoveAfterCreation; + set => RaiseAndSetIfChanged(ref _viewTemplateRemoveAfterCreation, value); + } + [PositiveInteger(ErrorMessage = "Validation.ViewCountIsNotCorrect")] public string ViewCount { get => _viewCount; @@ -142,6 +149,11 @@ public ViewPlan Create() { // Необходимо для перезагрузки габаритов видов перед их размещением, т.к. при назначении // секущего диапазона, видимых категорий, шаблона вида могут изменяться габариты вида Repository.Document.Regenerate(); + + // Снимаем шаблон вида, если запросил пользователь + if(ViewTemplateRemoveAfterCreation) { + view.ViewTemplateId = ElementId.InvalidElementId; + } } catch(Exception) { } } return view; @@ -165,7 +177,6 @@ public Viewport Place(ViewPlan view) { double titleBlockMinX = boundingBoxXYZ.Min.X; double titleBlockMaxY = boundingBoxXYZ.Max.Y; - int viewPortNumber = GetLastViewportNumber(100) + 1; var lastViewportInTitleBlock = GetLastViewport(vp => vp.GetBoxCenter().Y < titleBlockMaxY); // Создание видового экрана @@ -192,8 +203,11 @@ public Viewport Place(ViewPlan view) { correctPositionY, 0); + string viewPortNumberAsStr = + _uniqueViewportNumberKey + (GetLastViewportNumber(_uniqueViewportNumberKey, 0, 100) + 1); + viewPort.SetBoxCenter(correctPosition); - viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumber.ToString()); + viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumberAsStr); #if REVIT_2022_OR_GREATER viewPort.LabelOffset = new XYZ(viewportHalfWidth * 0.9, viewportHalfHeight * 2, 0); diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/ScheduleViewVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/ScheduleViewVM.cs index 54234b1c2..639df543d 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/ScheduleViewVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/ScheduleViewVM.cs @@ -44,9 +44,7 @@ public ScheduleViewVM( ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { ScheduleFilterList = new ScheduleFilterListVM(this, stringParamSetService, localizationService); - ValidateAllProperties(); - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); SelectReferenceSpecCommand = RelayCommand.Create(SelectReferenceSpec); } diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SectionViewVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SectionViewVM.cs index c0baf07db..b5f5894bf 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SectionViewVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SectionViewVM.cs @@ -6,7 +6,6 @@ using dosymep.Bim4Everyone; using dosymep.Revit; using dosymep.SimpleServices; -using dosymep.WPF.Commands; using RevitPackageDocumentation.Models; using RevitPackageDocumentation.ViewModels.Configuration.SheetSetParameters.Parameters; @@ -15,6 +14,8 @@ namespace RevitPackageDocumentation.ViewModels.Configuration.Sheet.SheetComponents; internal class SectionViewVM : SheetComponentVM { + private readonly string _uniqueViewportNumberKey = "‏"; + private string _viewNameFormula = string.Empty; private string _viewName; private ViewFamilyType _viewFamilyType; @@ -26,6 +27,7 @@ internal class SectionViewVM : SheetComponentVM { private FiltrationComboBoxFilterListVM _viewFamilyTypeFilter; private FiltrationComboBoxFilterListVM _viewportTypeFilter; private FiltrationComboBoxFilterListVM _viewTemplateFilter; + private bool _viewTemplateRemoveAfterCreation = false; // Расстояние до дальней секущей плоскости сечения private readonly double _viewDepth = UnitUtilsHelper.ConvertToInternalValue(3000); @@ -49,8 +51,6 @@ public SectionViewVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); } [Required(ErrorMessage = "Validation.ViewNameIsEmpty")] @@ -98,6 +98,11 @@ public FiltrationComboBoxFilterListVM ViewTemplateFilter { set => RaiseAndSetIfChanged(ref _viewTemplateFilter, value); } + public bool ViewTemplateRemoveAfterCreation { + get => _viewTemplateRemoveAfterCreation; + set => RaiseAndSetIfChanged(ref _viewTemplateRemoveAfterCreation, value); + } + [PositiveInteger(ErrorMessage = "Validation.ViewCountIsNotCorrect")] public string ViewCount { get => _viewCount; @@ -160,6 +165,11 @@ public ViewSection Create(int number) { // Необходимо для перезагрузки габаритов видов перед их размещением, т.к. при назначении // секущего диапазона, видимых категорий, шаблона вида могут изменяться габариты вида Repository.Document.Regenerate(); + + // Снимаем шаблон вида, если запросил пользователь + if(ViewTemplateRemoveAfterCreation) { + view.ViewTemplateId = ElementId.InvalidElementId; + } } catch(System.Exception) { } return view; } @@ -181,7 +191,6 @@ public Viewport Place(ViewSection view, int number) { double titleBlockMinX = boundingBoxXYZ.Min.X; double titleBlockMinY = boundingBoxXYZ.Min.Y; - int viewPortNumber = GetLastViewportNumber(0, 100) + 1; var lastViewport = GetLastViewport(vp => vp.GetBoxCenter().Y < 0); // Создание видового экрана @@ -202,8 +211,11 @@ public Viewport Place(ViewSection view, int number) { titleBlockMinY - viewportHalfHeight, 0); + string viewPortNumberAsStr = + _uniqueViewportNumberKey + (GetLastViewportNumber(_uniqueViewportNumberKey, 0, 100) + 1); + viewPort.SetBoxCenter(correctPosition); - viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumber.ToString()); + viewPort.SetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER, viewPortNumberAsStr); #if REVIT_2022_OR_GREATER viewPort.LabelOffset = new XYZ(viewportHalfWidth * 0.9, viewportHalfHeight * 2, 0); diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SheetComponentVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SheetComponentVM.cs index 4c281bfbc..64b35eb72 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SheetComponentVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/SheetComponentVM.cs @@ -45,9 +45,13 @@ private void OnErrorsChanged(object sender, DataErrorsChangedEventArgs e) { } /// - /// Получает следующий номер видового экрана на листе + /// Получает следующий номер видового экрана на листе с учетом уникального префикса /// - protected int GetLastViewportNumber(int startNumber = int.MinValue, int endNumber = int.MaxValue) { + protected int GetLastViewportNumber( + string subStrInViewportNumber, + int startNumber = int.MinValue, + int endNumber = int.MaxValue) { + var viewports = Sheet.SheetInstance.GetAllViewports() .Select(id => Repository.Document.GetElement(id) as Viewport) .ToList(); @@ -55,8 +59,13 @@ protected int GetLastViewportNumber(int startNumber = int.MinValue, int endNumbe int lastViewportNumber = startNumber; foreach(var viewport in viewports) { string viewportNumberAsStr = viewport.GetParamValue(BuiltInParameter.VIEWPORT_DETAIL_NUMBER); + + if(viewportNumberAsStr is null || !viewportNumberAsStr.Contains(subStrInViewportNumber)) { + continue; + } + // Если не число, то не влияет, т.к. плагин будет ставить число - if(int.TryParse(viewportNumberAsStr, out int viewportNumberAsInt)) { + if(int.TryParse(viewportNumberAsStr.Replace(subStrInViewportNumber, ""), out int viewportNumberAsInt)) { if(viewportNumberAsInt > lastViewportNumber && viewportNumberAsInt < endNumber) { lastViewportNumber = viewportNumberAsInt; } diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TextNoteVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TextNoteVM.cs index 69f95ae25..914f8de91 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TextNoteVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TextNoteVM.cs @@ -5,7 +5,6 @@ using Autodesk.Revit.DB; using dosymep.SimpleServices; -using dosymep.WPF.Commands; using RevitPackageDocumentation.Models; using RevitPackageDocumentation.ViewModels.Configuration.SheetSetParameters.Parameters; @@ -28,8 +27,6 @@ public TextNoteVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); } [Required(ErrorMessage = "Validation.TextNoteTypeIsNull")] diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TypicalAnnotationVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TypicalAnnotationVM.cs index f4ee5be01..cc8182c91 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TypicalAnnotationVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetComponents/TypicalAnnotationVM.cs @@ -4,7 +4,6 @@ using Autodesk.Revit.DB; using dosymep.SimpleServices; -using dosymep.WPF.Commands; using RevitPackageDocumentation.Models; using RevitPackageDocumentation.ViewModels.Configuration.SheetSetParameters.Parameters; @@ -22,9 +21,6 @@ public TypicalAnnotationVM( SheetVM sheetVM, ILocalizationService localizationService) : base(repository, stringParamSetService, sheetSetParams, sheetVM, localizationService) { - ValidateAllProperties(); - - CreateComponentCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); } [Required(ErrorMessage = "Validation.AnnotationTypeIsNull")] diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetVM.cs index 24dbb6b7c..758ae6066 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/Sheet/SheetVM.cs @@ -54,8 +54,6 @@ public SheetVM( _sheetSetVMFactory = sheetSetVMFactory; _sheetSetDataFactory = sheetSetDataFactory; - ValidateAllProperties(); - SelectTitleBlockFamilyCommand = RelayCommand.Create(SelectTitleBlockFamily); CreateSheetCommand = RelayCommand.Create(CreateComponent, CanCreateComponent); diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetParameters/SheetSetParametersListVM.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetParameters/SheetSetParametersListVM.cs index 6de5fe343..5673cb815 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetParameters/SheetSetParametersListVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetParameters/SheetSetParametersListVM.cs @@ -19,6 +19,7 @@ internal class SheetSetParametersListVM : ValidatableVM { private ObservableCollection _params = []; private ObservableCollection _selectElemParams = []; + private string _moduleComment; public SheetSetParametersListVM( SheetSetVM sheetSet, @@ -54,6 +55,11 @@ public ObservableCollection SelectElemParams { set => RaiseAndSetIfChanged(ref _selectElemParams, value); } + public string ModuleComment { + get => _moduleComment; + set => RaiseAndSetIfChanged(ref _moduleComment, value); + } + private void AddSheetSetParam(ComponentTypeItem selectedSheetSetParamType) { if(selectedSheetSetParamType?.ComponentType == null) return; diff --git a/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetVMFactory.cs b/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetVMFactory.cs index e8b6a9bd2..e1aa4571d 100644 --- a/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetVMFactory.cs +++ b/src/RevitPackageDocumentation/ViewModels/Configuration/SheetSetVMFactory.cs @@ -66,11 +66,14 @@ public SheetSetVM CreateSheetSetVM(SheetSetData data) { _messageBoxService, this, _sheetSetDataFactory, - _localizationService); + _localizationService) { + ModuleComment = data.ParamsComment + }; foreach(var paramData in data.Params) { sheetSetVM.SheetSetParams.AddSheetSetParam(paramData); } + foreach(var sheetData in data.Sheets) { var sheetVM = CreateSheetVM(sheetSetVM, sheetData); sheetSetVM.SheetList.Add(sheetVM); @@ -154,6 +157,7 @@ private PlanViewVM CreatePlanViewVM(SheetSetVM sheetSetVM, SheetVM sheetVM, Plan ViewTemplate = _revitRepository.PlanViewTemplates.FirstOrDefault(v => v.Name.Equals(data.ViewTemplateName)), ViewTemplateFilter = GetFilterList(data.ViewTemplateFilterValues, sheetSetVM.SheetSetParams.Params), + ViewTemplateRemoveAfterCreation = data.ViewTemplateRemoveAfterCreation ?? false, ViewportType = _revitRepository.ViewportTypes.FirstOrDefault(v => v.Name.Equals(data.ViewportTypeName)), ViewportTypeFilter = GetFilterList(data.ViewportTypeFilterValues, sheetSetVM.SheetSetParams.Params), ViewCount = data.ViewCount ?? "1", @@ -181,6 +185,7 @@ private CalloutViewVM CreateCalloutViewVM(SheetSetVM sheetSetVM, SheetVM sheetVM ViewTemplate = _revitRepository.PlanViewTemplates.FirstOrDefault(v => v.Name.Equals(data.ViewTemplateName)), ViewTemplateFilter = GetFilterList(data.ViewTemplateFilterValues, sheetSetVM.SheetSetParams.Params), + ViewTemplateRemoveAfterCreation = data.ViewTemplateRemoveAfterCreation ?? false, ViewportType = _revitRepository.ViewportTypes.FirstOrDefault(v => v.Name.Equals(data.ViewportTypeName)), ViewportTypeFilter = GetFilterList(data.ViewportTypeFilterValues, sheetSetVM.SheetSetParams.Params), ViewCount = data.ViewCount ?? "1", @@ -208,6 +213,7 @@ private SectionViewVM CreateSectionViewVM(SheetSetVM sheetSetVM, SheetVM sheetVM ViewTemplate = _revitRepository.SectionViewTemplates.FirstOrDefault(v => v.Name.Equals(data.ViewTemplateName)), ViewTemplateFilter = GetFilterList(data.ViewTemplateFilterValues, sheetSetVM.SheetSetParams.Params), + ViewTemplateRemoveAfterCreation = data.ViewTemplateRemoveAfterCreation ?? false, ViewportType = _revitRepository.ViewportTypes.FirstOrDefault(v => v.Name.Equals(data.ViewportTypeName)), ViewportTypeFilter = GetFilterList(data.ViewportTypeFilterValues, sheetSetVM.SheetSetParams.Params), ViewCount = data.ViewCount ?? "1", diff --git a/src/RevitPackageDocumentation/ViewModels/Validation/ValidatableVM.cs b/src/RevitPackageDocumentation/ViewModels/Validation/ValidatableVM.cs index 068da147c..8d7290295 100644 --- a/src/RevitPackageDocumentation/ViewModels/Validation/ValidatableVM.cs +++ b/src/RevitPackageDocumentation/ViewModels/Validation/ValidatableVM.cs @@ -69,6 +69,8 @@ protected ValidatableVM(ILocalizationService localizationService) { foreach(var property in _trackedChildProperties.Values) { RegisterTrackedProperty(property); } + + ValidateAllProperties(); } public void ValidateAllProperties() { diff --git a/src/RevitPackageDocumentation/Views/CustomDataTemplates.xaml b/src/RevitPackageDocumentation/Views/CustomDataTemplates.xaml index 3a18ca537..7083f4a11 100644 --- a/src/RevitPackageDocumentation/Views/CustomDataTemplates.xaml +++ b/src/RevitPackageDocumentation/Views/CustomDataTemplates.xaml @@ -115,6 +115,7 @@ + + + @@ -223,7 +234,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -327,6 +337,7 @@ + + + @@ -435,7 +456,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -543,6 +563,7 @@ + + + @@ -649,7 +680,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -851,7 +881,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -999,7 +1028,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -1093,7 +1121,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> @@ -1215,7 +1242,6 @@ AcceptsReturn="True" TextWrapping="WrapWithOverflow" PlaceholderText="{extensions:Localized MainWindow.Comments}" - Foreground="LightGray" Text="{Binding ModuleComment}" /> diff --git a/src/RevitPackageDocumentation/Views/MainWindow.xaml b/src/RevitPackageDocumentation/Views/MainWindow.xaml index 0e0ceb2a8..9725921df 100644 --- a/src/RevitPackageDocumentation/Views/MainWindow.xaml +++ b/src/RevitPackageDocumentation/Views/MainWindow.xaml @@ -170,6 +170,7 @@ + @@ -237,6 +238,17 @@ Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" + Margin="5" + VerticalAlignment="Center" + AcceptsReturn="True" + TextWrapping="WrapWithOverflow" + Text="{Binding Path=CurrentSheetSet.SheetSetParams.ModuleComment, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" + PlaceholderText="{me:LocalizationSource MainWindow.Comments}" /> + + Text template Element type Select + Remove after creation Sheet name is empty Sheet name is incorrect diff --git a/src/RevitPackageDocumentation/assets/Localization/Language.ru-RU.xaml b/src/RevitPackageDocumentation/assets/Localization/Language.ru-RU.xaml index 8e7ff6622..83ae0728b 100644 --- a/src/RevitPackageDocumentation/assets/Localization/Language.ru-RU.xaml +++ b/src/RevitPackageDocumentation/assets/Localization/Language.ru-RU.xaml @@ -73,6 +73,7 @@ Шаблон текста Типоразмер Выбрать + Снять после создания Имя листа не заполнено Имя листа заполнено некорректно