Как запретить пользователю менять профиль, установив текущую кнопку в AutoCAD? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть приложение WPF, и я открываю чертеж в AutoCAD из своего приложения. Я просто хотел запретить пользователю изменять текущий профиль с помощью кнопки «Установить текущую», и я не хотел вносить изменения в профиль в настройках реестра.

1 Ответ

0 голосов
/ 06 мая 2019

Я наконец нашел ответ, просто используйте UrrentProfileChangingEventHandler, чтобы показать всплывающее окно, и при событии CurrentProfileChangedEventHandler сделайте профиль активным, который вы хотите.Вот код.

Включите метод инициализации

UserConfigurationManager bnb = Autodesk.AutoCAD.ApplicationServices.Core.Application.UserConfigurationManager;

            bnb.CurrentProfileChanging += UserConfigManagerEvent_CurrentProfileChanging_Handler;

            bnb.CurrentProfileChanged += UserConfigManagerEvent_CurrentProfileChanged_Handler;

Добавьте метод, который вызывает вызов при изменении профиля

private void UserConfigManagerEvent_CurrentProfileChanging_Handler(object sender,ProfileEventArgs e)
        {
            string profileName = acApp.GetSystemVariable("CPROFILE").ToString();
            curProfile = e.ProfileName;
            if (profileName != curProfile && !IsMessageDisplayed)
            {
                IsMessageDisplayed = true;
                MessageBox.Show("The selected profile is not associated with Project");
            }

            if (string.IsNullOrEmpty(prevProfile))
            {
                prevProfile = profileName;
            }
        }

Вызов после события изменения профиля

private void UserConfigManagerEvent_CurrentProfileChanged_Handler(object sender, ProfileEventArgs e)
        {
            AcadApplication app = (AcadApplication)Application.AcadApplication;
            AcadPreferences pref = app.Preferences;
            string cur = curProfile;
            if (curProfile.Equals(prevProfile))
            {
                IsMessageDisplayed = false;
                return;
            }
            else
            {
                pref.Profiles.ActiveProfile = prevProfile;
            }
        }
...