Работа с Панелью свойств в .NET (OPMNetExt) для AutoCAD

Автор Тема: Работа с Панелью свойств в .NET (OPMNetExt) для AutoCAD  (Прочитано 122186 раз)

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

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Те, кто интересовался, как добавить свои свойства в Панель свойств при помощи AutoCAD .NET API наверняка помнят статью Kean Walmsley: http://through-the-interface.typepad.com/through_the_interface/2009/03/exposing-autocads-properties-palette-functionality-to-net---part-1.html
Прошло много лет с тех пор. Cyrille Fauvel сделал обновлённую версию. Исходник и примеры можно найти здесь: https://github.com/cyrillef/OPMNetExt
 
« Последнее редактирование: 22-01-2017, 17:56:06 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Исправленная версия от Virupaksha Aithal для AutoCAD 2017 и VS 2015: http://forums.autodesk.com/autodesk/attachments/autodesk/34/33606/1/OPMNetExt-master.zip   
« Последнее редактирование: 22-01-2017, 17:56:19 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Стоит из названия убрать "для AutoCAD 2016" и может даже закрепить
« Последнее редактирование: 22-01-2017, 17:56:31 от Александр Ривилис »

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Стоит из названия убрать "для AutoCAD 2016" и может даже закрепить
Согласен.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Добавил версию, адаптированную под AutoCAD 2018.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Объясните мне, не знакомому с С++:
1. Чтобы открыть проект по ссылкам нужен VS 2015 (2010)? У меня 2017 - не открывается.
2. Для каждой версии автокада (2010-2018) должна собираться отдельная библиотека? Универсальной сделать невозможно?
3. Ко второму пункту - от разрядности платформы тоже зависит? 32 или 64

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Чтобы открыть проект по ссылкам нужен VS 2015 (2010)? У меня 2017 - не открывается.
Для какой версии AutoCAD? VS 2017 без установленного VS 2015 не подойдёт.
2. Для каждой версии автокада (2010-2018) должна собираться отдельная библиотека? Универсальной сделать невозможно?
Универсальной сделать невозможно. Для версии 2010...2012,2013...2014,2015...2016,2017,2018 нужны отдельные модули.
3. Ко второму пункту - от разрядности платформы тоже зависит? 32 или 64
Да. Т.е. количество модулей увеличивается в два раза.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Для какой версии AutoCAD? VS 2017 без установленного VS 2015 не подойдёт.
Получается, что если мне нужно иметь библиотеки для 2010-2018 автокадов, то у меня должны быть установлены VS 2010, 2012, 2013, 2015? Какой ужас)) С .Net все проще конечно

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Ты пропустил VS 2008 SP1 (для AutoCAD 2010...2012).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
VS 2013 не нужен.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Еще вопрос - если я делаю проект к которому подключаю ссылку на библиотеку OPM, мне нужно для этого проекта указывать платформу? По сути мой проект не зависит от платформы и целевое значение платформы установлено в AnyCPU. При использовании "минимального" набора ссылок (acdbmgd.dll, acmgd.dll (accoremgd.dll)) такой вариант работает как надо.
Будет ли правильным оставить AnyCPU, добавить ссылку на библиотеку OPM для моей платформы (х64), а уже при использовании моего проекта в процессе загрузки в AutoCAD предусмотреть вариант загрузки библиотеки OPM (x68 или x64)

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Будет ли правильным оставить AnyCPU, добавить ссылку на библиотеку OPM для моей платформы (х64), а уже при использовании моего проекта в процессе загрузки в AutoCAD предусмотреть вариант загрузки библиотеки OPM (x68 или x64)
Думаю, что это будет неправильно. По сути здесь такая же ситуация, как и с AutoCAD COM/ActiveX.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Александр, я перестроил оба этих проекта у себя, получил нужные DLL и загрузил asdkOPMNetSample.dll в C3D2018.
По идее при выборе на чертеже отрезка в его свойствах должно появиться пользовательское свойство "My integer property"... Однако у меня, видимо, загрузка модуля не происходит - я добавил в метод Initialize вывод в командную строку, чтобы отсеживать этапы загрузки, но не отрабатывается даже первая строка.
Во время загрузки DLL ошибок и сообщений нет.


Я не знаю, куда я смотрел, но у меня все работает :)

Единственное замечание - при открытии этого решения один из проектов не загружается:


Приходится открывать файл arx-config.props в текстовом редакторе и править путь к каталогу Object ARX:


Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Александр, я перестроил оба этих проекта у себя, получил нужные DLL и загрузил asdkOPMNetSample.dll в C3D2018.
По идее при выборе на чертеже отрезка в его свойствах должно появиться пользовательское свойство "My integer property"... Однако у меня, видимо, загрузка модуля не происходит - я добавил в метод Initialize вывод в командную строку, чтобы отсеживать этапы загрузки, но не отрабатывается даже первая строка.
Во время загрузки DLL ошибок и сообщений нет.
Так как архив с проектом скачан из интернета, то у построенной библиотеки скорее всего установился идентификатор "заблокировано". Откройте свойства dll файла и снимите блокировку

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Приходится открывать файл arx-config.props в текстовом редакторе и править путь к каталогу Object ARX:
У тебя на картинке моя настройка пути к ObjectARX SDK - она у меня не на стандартном месте. Так что действительно нужно править конфигурационный файл.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение