CustomEntity на .Net без использования ObjectARX

Автор Тема: CustomEntity на .Net без использования ObjectARX  (Прочитано 23640 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет. Хотелось бы поднять эту тему.
В .Net достаточное количество возможностей, чтобы сделать "кастомные" объекты и не использовать при этом ObjectARX. Кто скажет "невозможно", отвечу - возможно! Если погулять по гуглу, то можно найти тему где это уже было реализовано почти 5 лет назад. И реализовано это на основе обычных анонимных блоках. Т.е. если плагин есть - эти объекты работают как "кастомные" - и есть ручки, и свои свойства, и стили, прочие атрибуты. Если открыть чертеж без плагина - эти объекты превращаются в обычные анонимные блоки. И это круто!
Я пробовал тот плагин, что можно найти по ссылке. За исключением некоторых "глюков" работает он отлично. Правда там версия только для 2012 автокада.
Я конечно пробовал декомпилировать (все разработчики на .Net об этом знают), но там такой объем информации, что нужно разбираться неделями (а то и месяцами), если ты не занимаешься кодингом профессионально. Как в моем случае)) Т.е. да - скрывать не буду - мне не хватает ума такое повторить. Хотя частично получалось:

К сожалению, автор той разработки так и не ответил нигде.

Вот у меня и вопрос - кто-нибудь еще подобным занимался? Есть где-нибудь (открытая) информация на эту тему?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Кастомизация объектов в .NET - это переопределение их поведения с помощью различных Overrule. Для этого есть несколько типов Overrule. Я плотно имел дело с тремя четырьмя из них:
  • DrawableOverrule - изменение отображения объекта
  • TransformOverrule - изменение поведения объекта при редактировании
  • GripOverrule - изменение поведения и отображения ручек объектов
  • OsnapOverrule - изменение поведения привязки к объектам
Мне их достаточно во всех случаях.
Примеров и материалов по ним в интернете более чем достаточно. И даже тут на форуме мы не раз их обсуждали.
P.S. Статья, на которую дана ссылка, какая-то сумбурная, несвязная. Я бы поспорил с некоторыми утверждениями автора. Но это не имеет смысла, учитывая, что это 2012 год и что автор, скорее всего, с автокадом имел очень непродолжительное знакомство.
Если уж изучать статьи, то лучше у авторитетных авторов, типа Кина Волмсли: http://through-the-interface.typepad.com/through_the_interface/overrules/
Еще хорошие примеры есть на этом ресурсе: http://spiderinnet1.typepad.com/.services/blog/6a0153928ee38e970b0153928f11cc970b/search?filter.q=overrule
« Последнее редактирование: 02-05-2017, 13:52:20 от Дмитрий Загорулькин »

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
В .Net достаточное количество возможностей, чтобы сделать "кастомные" объекты и не использовать при этом ObjectARX. Кто скажет "невозможно", отвечу - возможно! Если погулять по гуглу, то можно найти тему где это уже было реализовано почти 5 лет назад. И реализовано это на основе обычных анонимных блоках. Т.е. если плагин есть - эти объекты работают как "кастомные" - и есть ручки, и свои свойства, и стили, прочие атрибуты. Если открыть чертеж без плагина - эти объекты превращаются в обычные анонимные блоки. И это круто!
Бред. Ты путаешь мягкое с теплым. Далеко не всё, что можно сделать в Custom Entity можно сделать в .NET
Хотя частично получалось:
Насколько я помню это можно сделать при помощи обычного динамического блока.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
ну есть и у меня такие модули, ничего особо сложного в этом нет, код обсуждали туттут и тут

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Бред. Ты путаешь мягкое с теплым. Далеко не всё, что можно сделать в Custom Entity можно сделать в .NET
Ну я не спорю, что не все. Но при первом приближении, на мой взгляд, средств .Net достаточно. Возьмем для примера СПДС-модуль и самые распространенные элементы - отметка, сечение, выноска, обозначение узла и т.п. Мне думается, что возможности этих примитивов вполне можно реализовать средствами
Насколько я помню это можно сделать при помощи обычного динамического блока
Можно конечно, не спорю. Смысл был не в реализации конкретного элемента, а в осознании темы "свои примитивы"
ну есть и у меня такие модули, ничего особо сложного в этом нет, код обсуждали туттут и тут
Судя по ссылкам - у вас модули, обрабатывающие динамические блоки. Тот пример, что в топике в ссылке (да и в видео) не использует динамических блоков - там все программно создается
Дмитрий Загорулькин, а можете показать видео реализации?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Дмитрий Загорулькин, а можете показать видео реализации?
В основном, я это делаю с объектами Civil 3D. Показать могу, но вряд ли поймете в чем суть.
Но есть проект, который изменяет стандартные таблицы AutoCAD, добавляя к ним связанные контуры:

И где это используется (интересное начинается с 4:20 и примерно до 6:00):

А это мое "баловство" с окружностями (проверял производительность и возможности):


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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
К вопросу, в частности, о DrawableOverrule - я правильно понимаю, что если я сделал переопределение видимости, например, отрезка, то при открытии файла без плагина (создающего переопределение) я буду видеть именно отрезок?
Просто я пытаюсь подойти к изучению вопроса сразу с этого момента - что будет в файле без плагина? Вариант переопределения на основе блока как-раз таки и решает эту проблему. Хочу начать свои попытки освоения сразу с варианта, подходящего под мои нужды

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
К вопросу, в частности, о DrawableOverrule - я правильно понимаю, что если я сделал переопределение видимости, например, отрезка, то при открытии файла без плагина (создающего переопределение) я буду видеть именно отрезок?
Правильно.
Кстати, если переопределить отображение отрезков (не каких-то отдельных, а весь класс Autodesk.AutoCAD.DatabaseServices.Line), очень забавную картину можно наблюдать. Дело в том, что они используются очень широко при отрисовке различных более сложных элементов.
Просто я пытаюсь подойти к изучению вопроса сразу с этого момента - что будет в файле без плагина? Вариант переопределения на основе блока как-раз таки и решает эту проблему.
Какую проблему?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Какую проблему?
Ну может слово "проблема" не совсем подходящее)) Я хочу начать освоение Overrules сразу учитывая, чтобы графика осталась в чертеже без наличия плагина, создающего переопределения
Если взять тот-же СПДС-модуль, который практически сделан на Overrules - там переопределенные объекты остаются как Proxy

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
чтобы графика осталась в чертеже без наличия плагина, создающего переопределения
DrawableOverrule изменяет отображение объекта, но если объект будет выглядеть одинаково с перерисовкой (с плагином) и без перерисовки (без плагина), то в чем тогда будет заключаться перерисовка?
Если взять тот-же СПДС-модуль, который практически сделан на Overrules - там переопределенные объекты остаются как Proxy
Там не Overrules, а как раз таки Custom Entities

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Там не Overrules, а как раз таки Custom Entities
Там как-раз таки Overrules:





DrawableOverrule изменяет отображение объекта, но если объект будет выглядеть одинаково с перерисовкой (с плагином) и без перерисовки (без плагина), то в чем тогда будет заключаться перерисовка?
В том-же, в чем и смысл СПДС-модуля или Custom-Entity - создание "своих примитивов" с определенными свойствами. Да, многое можно решить динамическими блоками, но далеко не все.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Там как-раз таки Overrules:
Поспорим? :)

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Там как-раз таки Overrules:
Поспорим? :)
Не вижу смысла, если это не будет решать вопросы темы =)
Код СПДС-модуля я проглядывал, но мог и неверно понять, т.к. не являюсь по сути программистом. Скорее просто любителем

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Вот и я особо не вижу смысла доказывать какие-то очевидные вещи. Если приложение оставляет после себя Proxy, то это однозначно Custom Entity. Тут без вариантов. Но это и не отменяет того факта, что в приложении могут параллельно с этим использоваться инструменты Overrule.
Почитай, кстати, лицензионное соглашение на использование СПДС-модуля. Можно ли его декомпилировать и выкладывать куски кода на общедоступных ресурсах?

P.S. А тебе, я смотрю, не я первый об этом говорю: http://www.cyberforum.ru/csharp-beginners/thread1903303.html
Цитировать
В статье есть ссылка на скачивание, что само собой подразумевает открытый доступ (т.к. C# декомпилируется и все авторы это знают)
Шедевральная фраза! Вообще, при наличии определенных навыков, можно любую библиотеку декомпилировать. Но это не значит, что можно это делать! Есть такое понятие, как авторское право. И если автор сам не выложил исходный код, то, очевидно, что он не собирается им делиться. То, что .NET библиотеки легче вскрываются, чем другие, абсолютно ничего не меняет! Мало ли что авторы знают! Не у всех есть деньги на обфускаторы и шифраторы, да и не работают сборки для автокада после большинства из них.

P.P.S. Если следовать твоей логике, то я могу скачать отсюда приложение, декомпилировать его, снять защиту, снова собрать и пользоваться? А что, ссылка есть, значит, "подразумевает открытый доступ". Написано на .NET, значит "автор сам все знает". Так?  ;)
« Последнее редактирование: 04-05-2017, 21:32:41 от Дмитрий Загорулькин »

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

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