Доброго времени суток. Глобально задача стоит так: Создать на ленте кнопку, по нажатию которой, вставляется блок.
1я проблема с которой столкнулся:
Если сразу после создания вкладки на ленте нажать правую кнопку мыши (повтор последней команды), то добавляется еще 1 вкладка. Пока решил так (с помощью CommandFlags):
<CommandMethod("CreateButton", CommandFlags.NoHistory Or CommandFlags.NoUndoMarker)> _
Public Sub artCreateButton()
Но из такого решения вытекает вторая проблема. При использовании этих флагов, в командной строке автокада не подсвечивается автозаполнение при вводе первых символов команды (грубо говоря IntelliSense автокада на команду "CreateButton" перестает работать). Хотя если все таки ввести команду целиком, то все работает как надо. Это конечно неудобно. Можно сделать вначале проверку на наличие такой панели и если она есть то ничего не создавать, но может есть более элегантное решение?
Далее... Вызываю по нажатию кнопки процедуру вот таким образом:
Public Sub Execute(parameter As Object) Implements ICommand.Execute
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Using locdoc As DocumentLock = doc.LockDocument
Dim arc As New artRibbonClass
arc.InsertBoltsWithJig()
End Using
End Sub
В результате мне нужно, чтоб при нажатии правой кнопки мыши (повтор последней команды) опять вызывался .InsertBoltsWithJig(), но добиться этого никак не получается. Объявлен он так:
<CommandMethod("B")> _
Public Sub InsertBoltsWithJig()
Перепробовал кучу разных флагов как для Execute, так и для InsertBoltsWithJig, ничего не получилось. Пробовал вызывать из Execute через editor:
Выдает ошибку. Хотя если вручную написать в ком. строке "B", то и сама команда и ее повтор работает корректно. Подскажите пожалуйста, как же заставить повторяться команду вызываемую кнопкой?
Заранее спасибо всем неравнодушным!