-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathNavisworksExportCommand.cs
More file actions
111 lines (93 loc) · 3.97 KB
/
Copy pathNavisworksExportCommand.cs
File metadata and controls
111 lines (93 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using dosymep.Bim4Everyone;
using dosymep.Bim4Everyone.ProjectConfigs;
using dosymep.Bim4Everyone.SimpleServices;
using dosymep.Revit.ServerClient;
using dosymep.SimpleServices;
using dosymep.WpfCore.Ninject;
using dosymep.WpfUI.Core.Ninject;
using Ninject;
using RevitServerFolders.Models;
using RevitServerFolders.Services;
using RevitServerFolders.ViewModels;
using RevitServerFolders.Views;
using Wpf.Ui;
namespace RevitServerFolders;
[Transaction(TransactionMode.Manual)]
internal sealed class NavisworksExportCommand : BasePluginCommand {
public NavisworksExportCommand() {
PluginName = "Экспорт вида Navisworks";
}
protected override void Execute(UIApplication uiApplication) {
using var kernel = uiApplication.CreatePlatformServices();
kernel.Bind<RevitRepository>()
.ToSelf()
.InSingletonScope();
kernel.UseWpfUIProgressDialog<FileSystemViewModel>();
kernel.Bind<FileModelObjectConfig>()
.ToMethod(c => FileModelObjectConfig.GetPluginConfig(c.Kernel.Get<IConfigSerializer>()));
kernel.Bind<IModelObjectService>()
.To<FileSystemModelObjectService>();
kernel.Bind<IModelsExportService<FileModelObjectExportSettings>>()
.To<NwcExportService>()
.InSingletonScope();
kernel.Bind<ILoggerService>()
.ToMethod(c => PluginLoggerService)
.InSingletonScope();
kernel.Bind<IErrorsService>()
.To<ErrorsService>()
.InSingletonScope();
kernel.Bind<INwcExportViewSettingsService>()
.To<NwcExportViewSettingsService>()
.InSingletonScope();
kernel.Bind<RsModelObjectService>()
.ToSelf()
.InSingletonScope();
kernel.Bind<NwcExportViewSettingsViewModel>()
.ToSelf()
.InTransientScope();
kernel.Bind<NwcExportViewSettingsDialog>()
.ToSelf()
.InTransientScope();
kernel.Bind<IContentDialogService>()
.To<ContentDialogService>()
.InSingletonScope();
kernel.Bind<IReadOnlyCollection<IServerClient>>()
.ToMethod(c => c.Kernel.Get<Application>()
.GetRevitServerNetworkHosts()
.Select(item => new ServerClientBuilder()
.SetServerName(item)
.SetServerVersion(ModuleEnvironment.RevitVersion)
.Build())
.ToArray());
kernel.Bind<ViewModels.Rs.MainViewModel>()
.ToSelf()
.WithPropertyValue(nameof(ViewModels.Rs.MainViewModel.CanSelectFiles), true);
kernel.UseWpfOpenFolderDialog<FileSystemModelObjectService>();
kernel.UseWpfOpenFolderDialog<FileSystemViewModel>(
initialDirectory: Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
kernel.UseWpfOpenFileDialog<NwcExportViewSettingsViewModel>(filter: "RVT (*.rvt)|*.rvt");
kernel.BindMainWindow<FileSystemViewModel, MainWindow>();
kernel.BindOtherWindow<ErrorsViewModel, ErrorsWindow>();
kernel.UseWpfUIThemeUpdater();
string assemblyName = Assembly.GetExecutingAssembly().GetName().Name;
kernel.UseWpfLocalization($"/{assemblyName};component/assets/Localization/Language.xaml",
CultureInfo.GetCultureInfo("ru-RU"));
if(!OptionalFunctionalityUtils.IsNavisworksExporterAvailable()) {
throw new InvalidOperationException(
kernel.Get<ILocalizationService>().GetLocalizedString("NwcFromRvtWindow.PluginNotInstalled"));
}
Notification(kernel.Get<MainWindow>());
if(kernel.Get<IErrorsService>().ContainsErrors()) {
kernel.Get<ErrorsWindow>().ShowDialog();
}
}
}