-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathFileServerExportCommand.cs
More file actions
92 lines (74 loc) · 3.08 KB
/
Copy pathFileServerExportCommand.cs
File metadata and controls
92 lines (74 loc) · 3.08 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
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Reflection;
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;
using Application = Autodesk.Revit.ApplicationServices.Application;
namespace RevitServerFolders;
[Transaction(TransactionMode.Manual)]
internal sealed class FileServerExportCommand : BasePluginCommand {
public FileServerExportCommand() {
PluginName = "Экспорт RVT файлов из RS";
}
protected override void Execute(UIApplication uiApplication) {
using var kernel = uiApplication.CreatePlatformServices();
kernel.Bind<RevitRepository>()
.ToSelf()
.InSingletonScope();
kernel.UseWpfUIProgressDialog<RsViewModel>();
kernel.UseWpfUIProgressDialog<FileSystemViewModel>();
kernel.Bind<RsModelObjectConfig>()
.ToMethod(c => RsModelObjectConfig.GetPluginConfig(c.Kernel.Get<IConfigSerializer>()));
kernel.Bind<IModelObjectService>()
.To<RsModelObjectService>();
kernel.Bind<IModelsExportService<RsModelObjectExportSettings>>()
.To<RvtExportService>()
.InSingletonScope();
kernel.Bind<ILoggerService>()
.ToMethod(c => PluginLoggerService)
.InSingletonScope();
kernel.Bind<IErrorsService>()
.To<ErrorsService>()
.InSingletonScope();
kernel.Bind<IContentDialogService>()
.To<ContentDialogService>()
.InSingletonScope();
kernel.UseWpfOpenFolderDialog<RsViewModel>(
initialDirectory: Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
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();
kernel.BindMainWindow<RsViewModel, 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"));
Notification(kernel.Get<MainWindow>());
if(kernel.Get<IErrorsService>().ContainsErrors()) {
kernel.Get<ErrorsWindow>().ShowDialog();
}
}
}