-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathstartup.py
More file actions
129 lines (95 loc) · 4.12 KB
/
startup.py
File metadata and controls
129 lines (95 loc) · 4.12 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding: utf-8 -*-
import os
import sys
from pyrevit.versionmgr import updater
import LibGit2Sharp as libgit
from pyrevit import coreutils
from pyrevit.coreutils import envvars
import tempfile
update_on_startup_var = 'B4E_STARTUP_UPDATE'
def update_extensions():
revit_count = coreutils.get_revit_instance_count()
if revit_count == 1 and not check_update_on_startup():
set_check_update_on_startup(True)
for repo_info in updater.get_all_extension_repos():
try:
if updater.has_pending_updates(repo_info):
# сбрасываем репозиторий в исходное состояние
repo_info.repo.Reset(libgit.ResetMode.Hard, repo_info.repo.Head.Tip)
repo_info.repo.RemoveUntrackedFiles()
# пытаемся обновится
updater.update_repo(repo_info)
except Exception:
pass
def check_update_on_startup():
return envvars.get_pyrevit_env_var(update_on_startup_var)
def set_check_update_on_startup(state):
envvars.set_pyrevit_env_var(update_on_startup_var, state)
update_extensions()
# при запуске pyrevit
# не указывает путь до библиотеки
directory = os.getenv('APPDATA')
bim4everyone_lib = r"pyRevit\Extensions\BIM4Everyone.lib"
bim4everyone_lib_path = os.path.join(directory, bim4everyone_lib)
sys.path.append(bim4everyone_lib_path)
import dosymep_libs
dosymep_libs.load_assemblies()
import devexpress_libs
devexpress_libs.load_assemblies()
import clr
clr.AddReference('dosymep.Revit.dll')
clr.AddReference('dosymep.Bim4Everyone.dll')
try:
clr.AddReference('Bim4Everyone.RevitFiltration.dll')
clr.AddReference('Bim4Everyone.RevitFiltration.Controls.dll')
clr.AddReference('Bim4Everyone.RevitFiltration.Ninject.dll')
except:
# на случай, если библиотеки не успеют обновиться у юзера
pass
clr.AddReference('dosymep.Xpf.Core.dll')
clr.AddReference('dosymep.SimpleServices.dll')
clr.AddReference('Serilog.dll')
clr.AddReference('Serilog.Sinks.File.dll')
clr.AddReference('Serilog.Sinks.Autodesk.Revit.dll')
clr.AddReference('Serilog.Enrichers.Autodesk.Revit.dll')
clr.AddReference('DevExpress.Xpf.Core.v21.2.dll')
clr.AddReference('DevExpress.Data.Desktop.v21.2.dll')
clr.AddReference('DevExpress.Dialogs.v21.2.Core.dll')
try:
clr.AddReference('Wpf.Ui.dll')
clr.AddReference('Wpf.Ui.Abstractions.dll')
clr.AddReference('dosymep.WpfCore.dll')
clr.AddReference('dosymep.WpfCore.Ninject.dll')
clr.AddReference('dosymep.WpfUI.Core.dll')
clr.AddReference('dosymep.WpfUI.Core.Ninject.dll')
except:
# на случай, если библиотеки не успеют обновиться у юзера
pass
from pyrevit import HOST_APP
from pyrevit.userconfig import user_config
from DevExpress.Xpf.Core import *
from dosymep_libs.simple_services import *
from dosymep.Bim4Everyone.Schedules import SchedulesConfig
from dosymep.Bim4Everyone.KeySchedules import KeySchedulesConfig
from dosymep.Bim4Everyone.SystemParams import SystemParamsConfig
from dosymep.Bim4Everyone.SharedParams import SharedParamsConfig
from dosymep.Bim4Everyone.ProjectParams import ProjectParamsConfig
def get_config_path(section, option):
try:
if user_config.has_section(section):
return user_config.get_section(section).get_option(option)
except:
pass
def load_platform_settings():
shared_params_path = get_config_path("PlatformSettings", "SharedParamsPath")
project_params_path = get_config_path("PlatformSettings", "ProjectParamsPath")
SchedulesConfig.LoadInstance("")
KeySchedulesConfig.LoadInstance("")
SystemParamsConfig.LoadInstance(HOST_APP.language)
SharedParamsConfig.LoadInstance(shared_params_path)
ProjectParamsConfig.LoadInstance(project_params_path)
# Удаляем стиль DevExpress
# (на некоторых окнах портится layout)
ApplicationThemeHelper.ApplicationThemeName = Theme.NoneName
ServicesProvider.LoadInstance(__revit__)
load_platform_settings()