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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 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
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

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

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

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

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

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

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

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

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

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