整理代码
This commit is contained in:
102
ShrlAlgoToolkit.RevitAddins/RvView/ViewManagerModel.cs
Normal file
102
ShrlAlgoToolkit.RevitAddins/RvView/ViewManagerModel.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
|
||||
using Autodesk.Revit.DB;
|
||||
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using CommunityToolkit.Mvvm.Messaging;
|
||||
|
||||
|
||||
namespace ShrlAlgo.RvKits.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;
|
||||
}
|
||||
Reference in New Issue
Block a user