Files
ShrlAlgoToolkit/ShrlAlgoToolkit.RevitAddins/RvView/ViewManagerModel.cs
2025-04-24 20:56:44 +08:00

97 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Autodesk.Revit.DB;
using CommunityToolkit.Mvvm.ComponentModel;
namespace ShrlAlgoToolkit.RevitAddins.RvView;
public partial class ViewManagerModel : ObservableObject
{
[ObservableProperty]
private UserViewDetailLevel? detailLevel;
[ObservableProperty]
private UserViewDiscipline? discipline;
[ObservableProperty]
private UserDisplayStyle displayStyle;
[ObservableProperty]
private string name;
[ObservableProperty]
private int scale;
[ObservableProperty]
private string sheetName;
[ObservableProperty]
private string sheetNumber;
[ObservableProperty]
private UserViewType userViewType;
public View View { get; set; }
[ObservableProperty]
private View viewTemplate;
public List<View> ViewTemplates { get; private set; }
public ViewManagerModel(View view)
{
Name = view.Name;
View = view;
UserViewType = (UserViewType)view.ViewType;
Discipline = view.HasViewDiscipline() ? (UserViewDiscipline)view.Discipline : null;
DetailLevel = (UserViewDetailLevel)view.DetailLevel;
DisplayStyle = (UserDisplayStyle)view.DisplayStyle;
Scale = view.Scale;
ViewTemplates = view.Document
.OfClass<View>()
.Cast<View>()
.Where(v => v.IsTemplate && View.IsValidViewTemplate(v.Id))
.ToList();
//ViewTemplate = view.Document.GetElement(view.ViewTemplateId) as View;
ViewTemplate = ViewTemplates.FirstOrDefault(template => View.ViewTemplateId == template.Id);
//保证选中项在集合中使得combobox默认选中
//ViewTemplate = view.Document.OfCollector<View>().Cast<View>().FirstOrDefault(v => v.IsTemplate && v.Id == view.ViewTemplateId);
//ViewTemplate = view.Document.GetElement(view.ViewTemplateId) as View;
SheetName = view.get_Parameter(BuiltInParameter.VIEW_DESCRIPTION).AsString();
SheetNumber = view is ViewSheet sheet ? sheet.SheetNumber : null;
}
//protected override void OnPropertyChanged(PropertyChangedEventArgs e)
//{
// base.OnPropertyChanged(e);
// if (
// e.PropertyName == nameof(DetailLevel)
// || e.PropertyName == nameof(Discipline)
// || e.PropertyName == nameof(DisplayStyle)
// || e.PropertyName == nameof(Scale)
// || e.PropertyName == nameof(SheetName)
// || e.PropertyName == nameof(ViewTemplate)
// )
// {
// Messenger.Send(new ViewMessage(this, e.PropertyName));
// }
//}
public bool IsDetailLevelEditable => UserViewType is not UserViewType.Schedule and not UserViewType.DrawingSheet;
public bool IsDisciplineEditable => Discipline != null;
public bool IsDisplayStyleEditable => UserViewType is not UserViewType.Schedule and not UserViewType.DrawingSheet;
public bool IsScaleEditable =>
Scale != 0
&& (View is not View3D view3D || !view3D.IsPerspective)
&& UserViewType != UserViewType.DrawingSheet
&& UserViewType != UserViewType.Schedule
&& UserViewType != UserViewType.Rendering;
public bool IsSheetNameEditable => UserViewType is not UserViewType.Schedule and not UserViewType.DrawingSheet;
public bool IsSheetNumberEditable => SheetNumber != null;
public bool IsViewTemplateEditable => UserViewType != UserViewType.DrawingSheet;
}