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;
|
|
|
|
|
|
using ShrlAlgoToolkit;
|
|
|
|
|
|
using ShrlAlgoToolkit.RevitAddins;
|
2025-02-10 20:53:40 +08:00
|
|
|
|
|
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
|
|
|
|
|
|
{
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
public partial UserViewDetailLevel? DetailLevel { get; set; }
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
2024-09-22 11:05:41 +08:00
|
|
|
|
private UserViewDiscipline? discipline;
|
|
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
public partial UserDisplayStyle DisplayStyle { get; set; }
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
2024-09-22 11:05:41 +08:00
|
|
|
|
private string name;
|
|
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
public partial int Scale { get; set; }
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
2024-09-22 11:05:41 +08:00
|
|
|
|
private string sheetName;
|
|
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
|
|
|
|
|
public partial string SheetNumber { get; set; }
|
2024-09-22 11:05:41 +08:00
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[ObservableProperty]
|
2024-09-22 11:05:41 +08:00
|
|
|
|
private UserViewType userViewType;
|
|
|
|
|
|
|
|
|
|
|
|
public View View { get; set; }
|
|
|
|
|
|
|
2025-10-04 08:52:23 +08:00
|
|
|
|
[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;
|
|
|
|
|
|
}
|