Пример #1
0
        public void Initialize()
        {
            // Исключения в Initialize проглотит автокад, без выдачи сообщений. При этом сборка не будет загружена!!!.
            try
            {
                try
                {
                    PikSettings.LoadSettings();
                }
                catch { }
                // Запись в лог
                try
                {
                    Log.Info($"AutoCAD_PIK_Manager загружен. Версия {Assembly.GetExecutingAssembly().GetName().Version}. Настройки загружены из {PikSettings.CurDllLocation}");
                    Log.Info($"Путь к сетевой папке настроек - {PikSettings.ServerSettingsFolder}");
                    Log.Info($"Версия автокада - {Application.Version.ToString()}");
                    Log.Info($"Версия среды .NET Framework - {Environment.Version}");
                }
                catch { }

                // Если есть другие запущеннык автокады, то пропускаем копирование файлов с сервера, т.к. многие файлы уже заняты другим процессом автокада.
                if (!IsProcessAny())
                {
                    // Обновление настроек с сервера (удаление и копирование)
                    try
                    {
                        Update.UpdateSettings();
                        Log.Info("Настройки обновлены. " + Update.GetUpdateInfo());
                    }
                    catch (System.Exception ex)
                    {
                        try
                        {
                            Log.Error(ex, "Ошибка обновления настроек PikSettings.UpdateSettings();");
                        }
                        catch { }
                        _err += ex.Message;

                        // Попытка загрузки библиотек
                        LoadDll.LoadRefs();
                    }
                    try
                    {
                        PikSettings.LoadSettings(); // Перезагрузка настроек (могли обновиться файлы настроек на сервере)
                                                    // Замена путей к настройкам в файлах инструментальных палитр
                        ToolPaletteReplacePath.Replace();
                        Log.Info("Настройки загружены.");
                    }
                    catch (System.Exception ex)
                    {
                        try
                        {
                            Log.Error(ex, "Ошибка загрузки настроек PikSettings.LoadSettings();");
                        }
                        catch { }
                        _err += ex.Message;
                    }
                }
                try
                {
                    Profile profile = new Profile();
                    // Настройка профиля ПИК в автокаде
                    if (PikSettings.UserGroup.Contains("ГП"))
                    {
                        profile.SetProfilePIK  = false;
                        profile.SetTemplate    = false;
                        profile.SetToolPalette = false;
                        profile.SetSysVars     = PikSettings.GroupFileSettings?.SystemVariables;
                    }
                    profile.SetProfile();
                    Log.Info("Профиль настроен.");
                    //else
                    //{
                    //// Загрузка сбороки ГП
                    //string gpdll = Path.Combine(PikSettings.LocalSettingsFolder, @"Script\NET\ГП\PIK_GP_Civil.dll");
                    //LoadDll.Load(gpdll);
                    //}
                }
                catch (System.Exception ex)
                {
                    try
                    {
                        Log.Error(ex, "Ошибка настройки профиля SetProfile().");
                    }
                    catch { }
                    _err += ex.Message;
                }
            }
            catch (Settings.Exceptions.NoGroupException)
            {
                // Пользователь без группы.
                return;
            }
            catch (System.Exception ex)
            {
                try
                {
                    Log.Error(ex, "LoadSettings");
                    Log.Info($"AutoCAD_PIK_Manager загружен с ошибками. Версия {Assembly.GetExecutingAssembly().GetName().Version}. Настройки не загружены из {PikSettings.CurDllLocation}");
                    Log.Info($"Версия автокада - {Application.Version.ToString()}");
                    Log.Info($"Путь к сетевой папке настроек - {PikSettings.ServerSettingsFolder}");
                }
                catch { }
                _err += ex.Message;
            }

            // Загрузка библиотек
            LoadDll.LoadTry(Path.Combine(PikSettings.CurDllLocation, "AcadLib.dll"));

            //// Конекторы к базе MDM
            //LoadDll.LoadTry(Path.GetFullPath(Path.Combine(PikSettings.CurDllLocation, @"..\Script\NET\MDM_Connector.dll")));
            //LoadDll.LoadTry(Path.GetFullPath(Path.Combine(PikSettings.CurDllLocation, @"..\Script\NET\MDBCToLISP.dll")));
        }