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

ADN Club => Inventor API => Тема начата: brigval от 19-02-2015, 12:43:31

Название: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 12:43:31
Создал AddIn, для создания кнопок на ленте. Кнопки появились, а нажатия на кнопки не приводят ни к какому результату.  :(
Win XP, AI 2013 32 bit
Где можно поискать причину неработы кнопок?
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Романов от 19-02-2015, 15:25:10
Где можно поискать причину неработы кнопок?
В коде, а его здесь не видно). На каком языке примочка? В SDK есть примеры создания кнопок...
В общем случае (один из способов), если объявить кнопку:
Код - vb.net [Выбрать]
  1. Private WithEvents m_SurfaceBodyCmd As Inventor.ButtonDefinition
то можно создать процедуру обработки нажатия кнопки:
Код - vb.net [Выбрать]
  1. Private Sub m_SurfaceBodyCmd_OnExecute(ByVal Context As Inventor.NameValueMap) Handles m_SurfaceBodyCmd.OnExecute
  2. ...
  3. End Sub
А что у Вас?
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Кулик от 19-02-2015, 16:20:11
Алексей Романов, по-моему, ты говоришь об окне, а не о Ribbon
brigval, насколько я помню, к кнопкам надо "привязывать" выполнение каких-либо команд или функций. Эта привязка выполняется?
P.S. Поддержу предыдущего оратора: код нужен. Хотя бы код добавления одной кнопки. Без этого результата будет сложно добиться.
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 16:41:35
На первой картинке код.

На второй, хотел спросить, правильно это или нет?
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 16:42:07
К сожалению, картинки на прямую вставить не удалось  :(
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Кулик от 19-02-2015, 16:46:30
А что, просто код уже не вставляется?
Добавлю: как один из вариантов я бы подумывал об анализе http://habrahabr.ru/post/243305/
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 16:51:08
Я пишу с работы, а код на ноутбуке. Картинкой быстрее показалось  :)
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Кулик от 19-02-2015, 16:53:09
В качестве почти оффтопа: я в свое время тоже так думал. Пока не выяснилось, что ошибка у меня была не синтаксическая, а логическая. И крылась совсем в другом месте :)
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 16:57:14
В качестве почти оффтопа: я в свое время тоже так думал
Это про что? Про то, что код на картинке или про сам код?
Ошибки не подсвечиваются. Кнопки с изображениями создаются. Но нажатие на кнопки ни к чему не приводит.

Если у кого будет возможность взглянуть, выложу весь проект.
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Кулик от 19-02-2015, 16:58:44
Про то, что достаточно предоставить кусочек кода (или вообще обойтись скриншотом). Выяснилось, что этого недостаточно.
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 17:06:16
Выяснилось, что этого недостаточно.

Сам давно активно не программил. В данном случае не знаю где копать. Что смог, перепробовал...

Во вложении весь проект. Буду благодарен за любую помощь.
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Романов от 19-02-2015, 17:21:44
Алексей Романов, по-моему, ты говоришь об окне, а не о Ribbon
Я говорю именно о кнопке, а прилепить ее можно куда угодно, на Ленту, в Попменю и т.п.
Проект посмотрю, но могу только завтра...
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Романов от 19-02-2015, 18:17:41
Во вложении весь проект. Буду благодарен за любую помощь.
Нашел время посмотреть проект сегодня. Открыл в Visual Basic Express 2008, перестроил проект (перекомпилил dll), открыл в АИ2015, кнопки работают, даже пытаются запустить Taip.exe))).
На всякий случай возвращаю работающие кнопки...
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs7.postimg.org%2Fkx4ns9jh3%2Fimage.jpg&hash=eac0e92314b5cb589cc541bb17a90620) (http://postimg.org/image/kx4ns9jh3/)
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 19-02-2015, 18:27:57
Большое спасибо.
Осталось выяснить почему у меня не работают. Компилировал в VS 2005. Может это быть причиной? Как думаете?
Сообщение о пути на первой кнопке просто для проверки.
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Александр Ривилис от 19-02-2015, 18:41:23
Компилировал в VS 2005. Может это быть причиной? Как думаете?
Очень вероятно, что причина в этом. Если мне не изменяет память , то для VS2005 "потолок" .NET 2.0, а AI 2013 наверное использует .NET 4.0
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Романов от 19-02-2015, 19:36:41
Согласен с Александром. АИ2013 использует версию .NET не ниже 3.5 (а может и 4).
Хотя странно, у меня старые проекты на .NET 2.0 для АИ работают до сих пор, просто нет времени переделывать...
brigval, попробуй просто dllку запустить, которую я скомпилил...
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 20-02-2015, 11:26:36
Нашел время посмотреть проект сегодня. Открыл в Visual Basic Express 2008, перестроил проект (перекомпилил dll), открыл в АИ2015, кнопки работают, даже пытаются запустить Taip.exe))).На всякий случай возвращаю работающие кнопки...
Попробовал рабту Вашего проекта.
Ноутбук Win XP SP2 x32, AI 2013 - кнопки не заработали. Что в общем-то понятно. Программа скомпилирована в 64-разрядной системе, в 32-х не должна работать в принципе. На склолько я в курсе.
Комп. на работе Win 7 x64, AI 2013 - кнопки заработали. Но ровно 50 % кнопок. Из 10 срабатывают только 5.

Хотел на ноут бук установить VS2010 Express, но он ставится только на Win XP SP3. У меня же SP2. Попробую установить VS на работе...

Поздравляю всех с наступающим праздником 23 февраля!
Желаю здоровья, счастья, удачи! Успехов в программировании!  :)
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: Алексей Романов от 20-02-2015, 20:27:39
Программа скомпилирована в 64-разрядной системе, в 32-х не должна работать в принципе. На склолько я в курсе.
Не совсем так, в VS Express нет 64-битного компилятора, только 32... Но тут дело в другом, разрядность приложения определяется средой выполнения. Вот пример универсального установщика:@echo off
SET NETDIR=%WINDIR%\Microsoft.NET\Framework\v2.0.50727
%NETDIR%\regasm.exe /codebase InventorAutoSaveAddIn.dll

SET NETDIR=%WINDIR%\Microsoft.NET\Framework64\v2.0.50727
%NETDIR%\regasm.exe /codebase InventorAutoSaveAddIn.dll

SET NETDIR=
REM PAUSE
который устанавливает одно и тоже приложение в разные системы...

Но ровно 50 % кнопок. Из 10 срабатывают только 5.
Здесь 5 кнопок были определены за пределами процедур и поэтому работали, а 5 кнопок внутри процедуры, они и не должны работать.

Сегодня выбрал время поработать с проектом. Такое можно делать только для собственного потребления. Вот основные недостатки:
1. Неправильно выбрана вкладка для кнопок (сторонний AddIn без защиты от сброса ленты).
2. Панель с кнопками "спрятана" внутри вкладки, которую нужно запоминать.
3. Отсутствует восстановление кнопок после сброса ленты.
4. Жесткая привязка положения запускаемого файла.

Предлагаю модифицированный вариант проекта (почти готовый к "употреблению"). Основные отличия:
1. При старте Инвентора, если не найден запускаемый файл, показывается окно поиска запускаемого файла (*.exe), путь сохраняется в настройках проги между сеансами АИ.
2. Кнопки создаются на 2х панелях на отдельной вкладке ленты "Drawing" (а на остальных лентах они разве нужны?)
3. Вкладка с кнопками восстанавливается после сброса ленты пользователем.
4. Изменен внешний вид панелей с кнопками (названия условные).

Здесь еще нужно добавить скрытие вкладки при выгрузке приложения пользователем (и обратно), но это уже типа "домашнее" задание.))

Скрин вкладки (все кнопки работают) и исходник проекта прилагается (VB Express 2008).

Всех с наступающим праздником и удачи!
 
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs29.postimg.org%2Fkq9qimxlv%2Fbraip.jpg&hash=e19ea4b582c6bb773d41a766c33abc63) (http://postimg.org/image/kq9qimxlv/)
Название: Re: Не работают кнопки, созданные на ленте с помощью AddIn
Отправлено: brigval от 23-02-2015, 20:32:41
Здесь 5 кнопок были определены за пределами процедур и поэтому работали, а 5 кнопок внутри процедуры, они и не должны работать.

Существенное замечание. Спасибо.

Такое можно делать только для собственного потребления.

Да. Это не законченный проект.

1. Неправильно выбрана вкладка для кнопок (сторонний AddIn без защиты от сброса ленты).

Может, я и не прав, но считаю, что надстройки должны быть на специально предназначенной для этого вкладке.

2. Панель с кнопками "спрятана" внутри вкладки, которую нужно запоминать.

Не совсем понял. Например, для переключения видов в моделях постоянно пользуюсь вкладкой View.


3. Отсутствует восстановление кнопок после сброса ленты.

Согласен, здесь следует еще поработать.


4. Жесткая привязка положения запускаемого файла.

Да. Это результат не законченного проекта. Сделаю автоматическую загрузку надстройки после установки программы. Без участия пользователя.


2. Кнопки создаются на 2х панелях на отдельной вкладке ленты "Drawing" (а на остальных лентах они разве нужны?)

Рамку можно вставить не из чертежа. Загрузится шаблон чертежа и будет вставлена рамка.
Спецификацию иногда удобно редактировать из сборки, если не нужно пока обновлять номера позиций.
Центр масс может создаваться как из "пространства чертежа" таки из "пространства модели".
Согласен, что показ кнопок в соответствии с их функциями более удобен. Над этим поработаю.

3. Вкладка с кнопками восстанавливается после сброса ленты пользователем.
4. Изменен внешний вид панелей с кнопками (названия условные).
Здесь еще нужно добавить скрытие вкладки при выгрузке приложения пользователем (и обратно), но это уже типа "домашнее" задание.))Скрин вкладки (все кнопки работают) и исходник проекта прилагается (VB Express 2008).

Большое спасибо за примеры. Я их учту.


Удалось выяснить причину неработы кода на ноутбуке. Оказывается все дело было в Инвенторе.
Какое-то время назад при загрузке файлов стали появляться сообщения о невозможности загрузки каких-то библиотек. Я сначала не обращал на них внимание.
Потом ни с того ни с сего решил провести обновление путем повторной установки SP1.
Повторно SP1 установить не удалось (потребовал Inventor.msi, которого у меня в электричке не оказалось).
Но, чудо! Кнопки заработали!
Видимо, что-то все-таки обновилось и исправилось.

Большое спасибо за анализ кода и ценные советы.