|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
19.08.2004, 15:47 | #1 | |
Хочу создать свой раскрывающийся список в меню ACAD
Сообщений: n/a
|
||
Просмотров: 5056
|
|
||||
проектирование транспортных сооружений Регистрация: 26.04.2005
Москва
Сообщений: 107
|
Я вот писал прогу - сетапник для своих утилит AutoCAD. Утилиткимои предстаавляют небольшие ехе-шники, и всё время их тыкать в браузере не хотелось , да свой брауз не хотел писать дляних ....
Для 2006-ого такой сетапник не получился: ну никак не получается сохранить менюшки до следующего сеанса АКАКДа. var btn: IAcadToolbarItem; mn: IAcadPopupMenuItem; Tb: IAcadMenuGroup; btnBr: IAcadToolbar; btn_: IAcadToolbarItem; Menu: IAcadPopupMenu; SubMenu1, SubMenu2, SubMenu3, SubMenu4: IAcadPopupMenu; begin ... Menu:= Tb.Menus.Add(MineMenus[MineMenusCount]); SubMenu1:= Menu.AddSubMenu(1, 'Общиефункции'); Macro:= '-vbarun MacrosUn.dvb!ThisDrawing.ACDPROP'+#13; mn:= SubMenu1.AddMenuItem(SubMenu1.Count+1, 'Настройки', Macro); mn.HelpString:= 'Настройки AutoCad/СтройУтилит'; mn:= SubMenu1.AddSeparator(SubMenu1.Count+1); // и т.д. ... SubMenu2:= Menu.AddSubMenu (Menu.Count+1, 'Металлоконструкции'); Macro:= '-vbarun MacrosUn.dvb!ThisDrawing.Sortament'+#13; mn:= SubMenu2.AddMenuItem(SubMenu2.Count+1, 'Профиль металлопроката', Macro); mn.HelpString:= 'Черчение профиля металлопроката'; mn.EndSubMenuLevel:= 1; ... Menu.InsertInMenuBar(AcadDoc.Application.MenuBar.Count-2); ... end; |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
В меню можно вставлять свои разделы и пункты. Или статически, прописывая их в MNU (CUI) или динамически, через объектную модель AutoCAD. Но это уже будут не раскрывающиеся списки (combobox). Передать значение из любого макроса (из панели или из меню) в LISP-программу можно (через объект), можно и просто ожидание в программе предусмотреть во время какого-то getxxx, но это очень плохое решение. В этом случае пользователь будет обязан выбрать данные именно из меню. А знать этого он не обязан. Подобным образом была сделана АРКО - там в меню База1 и База2 были спрятаны несколько значений в макросе, а пользователь должен был знать, когда их нажимать. Правильное решение - прятать в макросе вызов функции с заданными аргументами. Тогда, при выборе из меню или панельки, программа уже будет знать требуемые параметры. Возможны и другие варианты с использованием внешних COM-серверов, когда меню вообще не прикреплено к AutoCAD. В этом случае возможностей гораздо больше, чем у combobox, так как они ограничены и по ширине, и являются линейными. Внешний сервер можно сделать и плавающим и "всегда сверху", и сворачивающимся в полоску. Например, так: [ATTACH]1134963574.jpg[/ATTACH] |
|||