Files
ShrlAlgoToolkit/ShrlAlgoToolkit.RevitAddins/DrawSheet/ViewManagerModel.cs

98 lines
3.2 KiB
C#
Raw Normal View History

2025-04-24 20:56:44 +08:00
using Autodesk.Revit.DB;
2024-09-22 11:05:41 +08:00
using CommunityToolkit.Mvvm.ComponentModel;
2026-02-22 20:03:42 +08:00
using ShrlAlgoToolkit.RevitAddins.RvView;
2026-02-22 20:03:42 +08:00
namespace ShrlAlgoToolkit.RevitAddins.DrawSheet;
2024-09-22 11:05:41 +08:00
public partial class ViewManagerModel : ObservableObject
{
[ObservableProperty]
public partial UserViewDetailLevel? DetailLevel { get; set; }
2024-09-22 11:05:41 +08:00
[ObservableProperty]
2024-09-22 11:05:41 +08:00
private UserViewDiscipline? discipline;
[ObservableProperty]
public partial UserDisplayStyle DisplayStyle { get; set; }
2024-09-22 11:05:41 +08:00
[ObservableProperty]
2024-09-22 11:05:41 +08:00
private string name;
[ObservableProperty]
public partial int Scale { get; set; }
2024-09-22 11:05:41 +08:00
[ObservableProperty]
2024-09-22 11:05:41 +08:00
private string sheetName;
[ObservableProperty]
public partial string SheetNumber { get; set; }
2024-09-22 11:05:41 +08:00
[ObservableProperty]
2024-09-22 11:05:41 +08:00
private UserViewType userViewType;
public View View { get; set; }
[ObservableProperty]
public partial View ViewTemplate { get; set; }
public List<View> ViewTemplates { get; private set; }
2024-09-22 11:05:41 +08:00
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;
}