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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 21-01-2017, 20:04:52

Название: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 21-01-2017, 20:04:52
Подскажите, пусть у меня есть примитив, к примеру класса Line.

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

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

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

Или это только через Obj ARX возможно?
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 21-01-2017, 20:12:31
Я в Xdata записываю информацию и хочу эту информацию
редактировать через стандартное окно свойств примитива в AutoCAD.
Мне нужно для этого дополнить список свойств примитива и желательно создав свою подгруппу с именем.

Какой класс AutoCAD API мне использовать для реализации данной задачи?
В .NET API такого нет вообще. Есть только в ObjectARX. Называется Dynamic Properties.
Есть обертка OPMNetExt от Cyrille Fauvel (https://fr.linkedin.com/in/cyrillefauvel) : 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
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 21-01-2017, 20:21:17
Оказалось, что по поводу AutoCAD 2017 я был не прав. Вот исправленная версия от Virupaksha Aithal (http://adndevblog.typepad.com/autocad/virupaksha-aithal.html) для AutoCAD 2017 и VS 2015: http://forums.autodesk.com/autodesk/attachments/autodesk/34/33606/1/OPMNetExt-master.zip
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Дима_ от 22-01-2017, 00:10:13
А для того чтоб  свойство "проявилось" все равно же требуется загрузка обертки?  Это  я так намекаю,  что можно и свой диалог состряпать с любыми "вензелями" - таблицы, рисунки и пр.
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 22-01-2017, 00:29:56
А для того чтоб  свойство "проявилось" все равно же требуется загрузка обертки?
Да.
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 22-01-2017, 00:30:59
Это  я так намекаю,  что можно и свой диалог состряпать с любыми "вензелями" - таблицы, рисунки и пр.
Можно, но на C++
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 22-01-2017, 23:35:57
https://github.com/cyrillef/OPMNetExt
Спасибо за ссылочку.
1) Я посмотрел код, где приводится пример использования этой библиотеки.
2) Подключил ссылочку asdkOPMNewExt.DLL своему проекту проекту.
    Все нормально подключилось.

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

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

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

В работе этого примера в окне свойств AutoCAD
должно появится свойство с именем "My integer property"
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 22-01-2017, 23:51:34
Посмотри этот пример: http://through-the-interface.typepad.com/through_the_interface/2009/03/exposing-autocads-properties-palette-functionality-to-net---part-2.html
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 23-01-2017, 00:03:48
Посмотри этот пример
Этот пример в двух источниках находится
1) У Кеана
2) на сайте github.com, по ссылке, которую ты мне давал.
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 23-01-2017, 00:13:25
Этот пример в двух источниках находится
И? Что именно непонятно? Запусти этот пример и посмотри как он работает.
Потом тебе придётся в своём проекте создать класс по образцу класса CustomProp из примера и в свой метол Initialize перенести то, что есть в аналогичном методе из примера. Обрати внимание, что в примере свойство добавляется только для отрезков (AcDbLine). Если тебе нужно для всех видов примитивов, то замени на AcDbEntity.
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 23-01-2017, 00:20:06
Да и еще я обратил внимание.
для AutoCAD 2016 все нормально, а вот
при подключении ссылок AutoCAD API 2012
ругается на пространство имен

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

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

Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 23-01-2017, 00:23:24
Что именно непонятно?
Пока вроде все понятно.
Буду пробовать.
Я только хочу попробовать на acad 2012 а не на 2016
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 23-01-2017, 00:28:48
Спасибо. Считаю что вопрос по своей сути решен.
Ссылка получена. Методы решения есть.
Делаю отметку "РЕШЕНО"
 
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Алексей (IdeaSoft) от 23-01-2017, 00:30:25
Если тебе нужно для всех видов примитивов, то замени на AcDbEntity
Да это тоже полезное замечание. Спасибо!
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: bars4@inbox.ru от 20-05-2018, 08:42:54
Да.
Александр, а очередность загрузки: сначала обертка, а затем уже целевая сборка?
В примере же прописана загрузка Assembly.LoadFrom("asdkOPMNetExt.dll"); ?
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: bars4@inbox.ru от 20-05-2018, 09:36:18
Все, решено - обертка сама прогружается через Assembly.UnsafeLoadFrom("asdkOPMNetExt.dll")
Спасибо)
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: dmitrymaslakov от 03-08-2018, 05:11:16
Есть обертка OPMNetExt
для AutoCAD 2017 и VS 2015
А что делать, что бы данная обертка работала в VS 2012 и VS 2017 для AutoCAD 2014
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 03-08-2018, 15:46:46
А что делать, что бы данная обертка работала в VS 2012 и VS 2017 для AutoCAD 2014
Посмотри эту тему: http://adn-cis.org/forum/index.php?topic=4271.0
Но с AutoCAD 2014 будет работать только VS 2010 SP 1.
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: dmitrymaslakov от 06-08-2018, 06:33:59
Но с AutoCAD 2014 будет работать только VS 2010 SP 1.
Спасибо, свойства отобразились.
После сборки появились предупреждения:
 
(https://s33.postimg.cc/87l756gqz/image.png) (https://postimg.cc/image/87l756gqz/)

Нужно с этим что-либо делать или не стоит обращать на это внимание, т.к., в принципе, все работает?
Название: Re: Добавление своих свойств к объекту AutoCAD
Отправлено: Александр Ривилис от 07-08-2018, 13:28:57
Первое предупреждение можно и нужно проигнорировать. Второе и третье в принципе тоже если всё нормально работает.