Как подключить к кнопке на форме команду из меню
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как подключить к кнопке на форме команду из меню

Как подключить к кнопке на форме команду из меню

Ответ
Поиск в этой теме
Непрочитано 11.08.2011, 19:09 #1
Как подключить к кнопке на форме команду из меню
voivodo4kin
 
Регистрация: 11.08.2011
Сообщений: 7

Есть надстройка на Autocad со своим пользовательским меню. В меню есть команда «Открыть», которая запускает макрокоманду ^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open). Эта макрокоманда взята из файла с расширением *.MNU. Я хочу дописать кое-что на VBA и мне нужно, чтоб при нажатии кнопки на моей форме выполнялась эта самая макрокоманда ^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open). По сути, нужна имитация запуска команды пользовательского меню из формы VBA.
Помогите, пожалуйста. Я новичок в программировании, а время поджимает. Не могу закончить проект без этой мелочи. Спасибо всем кто откликнется.
Просмотров: 3268
 
Непрочитано 11.08.2011, 19:56
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Можно даже, чтоб еще и за пивом сбегало...
$M=$(if,$(eq,$(getvar,users5),1),^C^C_.open) никогда ничего вам не откроет...
по сути выполниться может только (km_prow1)
Из vba это можно так сделать
ThisDrawing.SendCommand "(km_prow1)" & vbCr
gomer вне форума  
 
Автор темы   Непрочитано 12.08.2011, 10:57
#3
voivodo4kin


 
Регистрация: 11.08.2011
Сообщений: 7


Большое спасибо за совет.
Поблема в том, что за km_prow1 закрeплено 3 команды:
***POP1
[Проект]
[Откpыть]^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open)
[Сохранить]^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_qsave)
[Сохpанить как]^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_saveas)

Наверное именно поэтому ThisDrawing.SendCommand "km_prow1" & vbCr не работает.
Можно заменить простой командой ThisDrawing.SendCommand "open" & vbCr .
Просто я до конца не понимаю для чего нужна операция $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open, и что произойдет без нее.
voivodo4kin вне форума  
 
Непрочитано 12.08.2011, 15:17
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от gomer Посмотреть сообщение
$M=$(if,$(eq,$(getvar,users5),1),^C^C_.open) никогда ничего вам не откроет...
Кажется я погарячился с выводами...
Чтобы после (km_prow1) выполнялось открытие или сохранение нужно в командной строке ввести users5 (системная переменная) и потом ввести 1!
Цитата:
Сообщение от voivodo4kin Посмотреть сообщение
Наверное именно поэтому ThisDrawing.SendCommand "km_prow1" & vbCr не работает.
Тут я опять ошибся... (Вот ведь насоветовал...) ThisDrawing.SendCommand "(km_prow1)" должно работать...
Ну а дальше...
Код:
[Выделить все]
If ThisDrawing.GetVariable("Users5") = "1" Then
 ThisDrawing.SendCommand "_.OPEN"  & vbCr
End If
Кажется так...
gomer вне форума  
 
Автор темы   Непрочитано 12.08.2011, 18:44
#5
voivodo4kin


 
Регистрация: 11.08.2011
Сообщений: 7


Огромное спасибо!
Все заработало. Правда пришлось дописать, чтоб форма пряталась.

Итог:

Вот макрокоманда:
^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open)

Вот аналог VBA:
If ThisDrawing.GetVariable("Users5") = "1" Then
Me.Hide
ThisDrawing.SendCommand "_.open " & vbCr
Me.Show
End If

Забыл сказать, что работает без
ThisDrawing.SendCommand "km_prow1" & vbCr

Мне, как полному чайнику, это кажется очень странным

Последний раз редактировалось voivodo4kin, 12.08.2011 в 19:22.
voivodo4kin вне форума  
 
Непрочитано 12.08.2011, 21:26
#6
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


если km_prow1 не загружен то и выполняться не может... ничего странного...
gomer вне форума  
 
Автор темы   Непрочитано 15.08.2011, 10:40
#7
voivodo4kin


 
Регистрация: 11.08.2011
Сообщений: 7


Теперь мне все ясно. Но как загрузить km_prow1.
На команду «ThisDrawing.SendCommand "km_prow1" & vbCr» получаем ответ: «Unknown command "KM_PROW1". Press F1 for help.»
А команда «ThisDrawing.SendCommand "_qsave" & vbCr» выполняется только после того, как я старой командой «^C^C(km_prow1) $M=$(if,$(eq,$(getvar,users5),1),^C^C_.open)» загружу km_prow1.

Значит остался открытым вопрос о том, как средсвами vba загрузить km_prow1
voivodo4kin вне форума  
 
Непрочитано 15.08.2011, 23:24
#8
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от voivodo4kin Посмотреть сообщение
как загрузить km_prow1
ThisDrawing.SendCommand "(load " & chr (34) "km_prow1.lsp" chr (34) & ")" & vbCr
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как подключить к кнопке на форме команду из меню



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Варианты контекстного меню, вызываемого в процессе работы команды hwd Программирование 14 24.12.2012 11:02
зависание меню свойств єлементов в AutoCad 2010 rus x86 при работе в Windows 7 micropyhcher Баги и пожелания в Autodesk 3 21.11.2009 11:05
Вызов контекстного меню без мыши Карлсон AutoCAD 21 05.06.2009 23:27
Создание меню в форме VBA Mischa Программирование 6 31.12.2008 17:09
Попасть в слой. Vova AutoCAD 106 10.03.2006 04:36