Не работают кнопки, созданные на ленте с помощью AddIn

Автор Тема: Не работают кнопки, созданные на ленте с помощью AddIn  (Прочитано 13131 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Согласен с Александром. АИ2013 использует версию .NET не ниже 3.5 (а может и 4).
Хотя странно, у меня старые проекты на .NET 2.0 для АИ работают до сих пор, просто нет времени переделывать...
brigval, попробуй просто dllку запустить, которую я скомпилил...

Оффлайн brigvalАвтор темы

  • ADN Club
  • Сообщений: 17
  • Карма: 0
  • Подпись под аватаром
Нашел время посмотреть проект сегодня. Открыл в 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 февраля!
Желаю здоровья, счастья, удачи! Успехов в программировании!  :)

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Программа скомпилирована в 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).

Всех с наступающим праздником и удачи!
 


Оффлайн brigvalАвтор темы

  • ADN Club
  • Сообщений: 17
  • Карма: 0
  • Подпись под аватаром
Здесь 5 кнопок были определены за пределами процедур и поэтому работали, а 5 кнопок внутри процедуры, они и не должны работать.

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

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

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

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

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

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

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


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

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


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

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


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

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

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

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


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

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