Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 01-07-2016, 22:15:43

Название: Выгрузка меню, распространяющаяся в т.ч. и на последующие сессии
Отправлено: Андрей Бушман от 01-07-2016, 22:15:43
AutoCAD 2009 x64 SP3 Enu

Загрузка меню в AutoCAD, выполненная посредством метода MenuGroups.Load(file_name), приводит к тому, что подгруженное меню будет оставаться подгруженным и во всех последующих сессиях AutoCAD. Однако, в то же время, метод MenuGroup.Unload() выгружает меню только для текущей сессии. После перезагрузки AutoCAD выгруженное меню снова окажется подгруженным. Такая разница в поведении мне кажется несколько не логичной...

Дабы выгрузка меню применялась и ко всем последующим сессиям работы AutoCAD - я дополнительно выполняю выгрузку соответствующего частичного меню в т.ч. и из CUI\CUIX файла основного меню (но уже при помощи API, предоставленного в CUI.dll).

Вопрос
Может я всё же изобретаю велосипед и в COM API так же можно выгружать меню так, чтобы оно не подгружалось в последующих сессиях AutoCAD?
Название: Re: Выгрузка меню, распространяющаяся в т.ч. и на последующие сессии
Отправлено: Александр Ривилис от 01-07-2016, 23:08:07
Однако, в то же время, метод MenuGroup.Unload() выгружает меню только для текущей сессии. После перезагрузки AutoCAD выгруженное меню снова окажется подгруженным.
Я правильно понимаю, что речь идёт об частичном меню? Тогда по логике необходимо пересохранить текущий WORKSPACE. Насколько я помню, сделать это через COM/ActiveX нельзя. Только командными методами. Это если речь идёт об AutoCAD 2009. Вообще же для современных версий есть методы Application.LoadPartialMenu и Application.UnloadPartialMenu
Кстати (я не проверял), но возможно поможет системная переменная WSAUTOSAVE для автоматического сохранения WORKSPACE.
Название: Re: Выгрузка меню, распространяющаяся в т.ч. и на последующие сессии
Отправлено: Андрей Бушман от 01-07-2016, 23:13:57
Вообще же для современных версий есть методы Application.LoadPartialMenu и Application.UnloadPartialMenu
Я указал интересующую меня версию AutoCAD. Ясно, спасибо, значит буду продолжать использовать обозначенное мною выше обходное решение, тем более что оно работает и во всех более новых версиях AutoCAD (т.е. править код не придётся).