Добавление своих свойств к объекту AutoCAD

Автор Тема: Добавление своих свойств к объекту AutoCAD  (Прочитано 11242 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Подскажите, пусть у меня есть примитив, к примеру класса Line.

Я в Xdata записываю информацию и хочу эту информацию
редактировать через стандартное окно свойств примитива в AutoCAD.
Мне нужно для этого дополнить список свойств примитива и желательно создав свою подгруппу с именем.

Какой класс AutoCAD API мне использовать для реализации данной задачи?

Есть ли ссылка на примеры реализации это задачи?

Или это только через Obj ARX возможно?

Отмечено как Решение Алексей (IdeaSoft) 23-01-2017, 00:29:08

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я в Xdata записываю информацию и хочу эту информацию
редактировать через стандартное окно свойств примитива в AutoCAD.
Мне нужно для этого дополнить список свойств примитива и желательно создав свою подгруппу с именем.

Какой класс AutoCAD API мне использовать для реализации данной задачи?
В .NET API такого нет вообще. Есть только в ObjectARX. Называется Dynamic Properties.
Есть обертка OPMNetExt от Cyrille Fauvel : https://github.com/cyrillef/OPMNetExt
Но она не работает под AutoCAD 2017.
http://through-the-interface.typepad.com/through_the_interface/2009/03/exposing-autocads-properties-palette-functionality-to-net---part-1.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Оказалось, что по поводу AutoCAD 2017 я был не прав. Вот исправленная версия от Virupaksha Aithal для AutoCAD 2017 и VS 2015: http://forums.autodesk.com/autodesk/attachments/autodesk/34/33606/1/OPMNetExt-master.zip
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
А для того чтоб  свойство "проявилось" все равно же требуется загрузка обертки?  Это  я так намекаю,  что можно и свой диалог состряпать с любыми "вензелями" - таблицы, рисунки и пр.

Оффлайн Александр Ривилис

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

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это  я так намекаю,  что можно и свой диалог состряпать с любыми "вензелями" - таблицы, рисунки и пр.
Можно, но на C++
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
https://github.com/cyrillef/OPMNetExt
Спасибо за ссылочку.
1) Я посмотрел код, где приводится пример использования этой библиотеки.
2) Подключил ссылочку asdkOPMNewExt.DLL своему проекту проекту.
    Все нормально подключилось.

Вот в этом примере есть класс
Код - C# [Выбрать]
  1. public class MyEntryPoint : IExtensionApplication

Как мне дальше с этим примером поступить?
Я так понимаю, что в точке входа моего проекта
я создаю экземпляр этого класса MyEntryPoint.

И сразу окошко свойств автокад начнёт работать в соответствии с тем,
что я напишу в методе Initialize() этого класса?

В работе этого примера в окне свойств AutoCAD
должно появится свойство с именем "My integer property"

Оффлайн Александр Ривилис

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Посмотри этот пример
Этот пример в двух источниках находится
1) У Кеана
2) на сайте github.com, по ссылке, которую ты мне давал.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Этот пример в двух источниках находится
И? Что именно непонятно? Запусти этот пример и посмотри как он работает.
Потом тебе придётся в своём проекте создать класс по образцу класса CustomProp из примера и в свой метол Initialize перенести то, что есть в аналогичном методе из примера. Обрати внимание, что в примере свойство добавляется только для отрезков (AcDbLine). Если тебе нужно для всех видов примитивов, то замени на AcDbEntity.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Да и еще я обратил внимание.
для AutoCAD 2016 все нормально, а вот
при подключении ссылок AutoCAD API 2012
ругается на пространство имен

Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Windows.OPM;

Скорее нужно скачать исходники проекта OPMNetExt.DLL и
и новый проект на С++ собрать с ссылками AutoCAD 2012.


Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Что именно непонятно?
Пока вроде все понятно.
Буду пробовать.
Я только хочу попробовать на acad 2012 а не на 2016

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Спасибо. Считаю что вопрос по своей сути решен.
Ссылка получена. Методы решения есть.
Делаю отметку "РЕШЕНО"
 

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Если тебе нужно для всех видов примитивов, то замени на AcDbEntity
Да это тоже полезное замечание. Спасибо!

Оффлайн bars4@inbox.ru

  • ADN OPEN
  • Сообщений: 27
  • Карма: 1
Да.
Александр, а очередность загрузки: сначала обертка, а затем уже целевая сборка?
В примере же прописана загрузка Assembly.LoadFrom("asdkOPMNetExt.dll"); ?

Оффлайн bars4@inbox.ru

  • ADN OPEN
  • Сообщений: 27
  • Карма: 1
Все, решено - обертка сама прогружается через Assembly.UnsafeLoadFrom("asdkOPMNetExt.dll")
Спасибо)

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Есть обертка OPMNetExt
для AutoCAD 2017 и VS 2015
А что делать, что бы данная обертка работала в VS 2012 и VS 2017 для AutoCAD 2014

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А что делать, что бы данная обертка работала в VS 2012 и VS 2017 для AutoCAD 2014
Посмотри эту тему: http://adn-cis.org/forum/index.php?topic=4271.0
Но с AutoCAD 2014 будет работать только VS 2010 SP 1.
« Последнее редактирование: 04-08-2018, 15:59:05 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Но с AutoCAD 2014 будет работать только VS 2010 SP 1.
Спасибо, свойства отобразились.
После сборки появились предупреждения:
 


Нужно с этим что-либо делать или не стоит обращать на это внимание, т.к., в принципе, все работает?

Оффлайн Александр Ривилис

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