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

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

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вот интересно мне знать - ну и что и где я нарушил? Какие авторские права? Я использую чужой декомпилированный код? Нет! Тем более, цитирую - "да и не работают сборки для автокада после большинства из них". Вы где-то видели, чтобы я выкладывал в открытый доступ? Нет! Или вы считаете картинку с 10 строчками, ничего не раскрывающими, выкладыванием чужого декомпилированного кода???  :o
Или Вы где-то видели приложения от меня, которые используют чужой код, полученный через декомпиляцию???
Ввиду двух фактов: а) приложения на .Net легко декомпилируются и б) В интернете масса бесплатных декомпиляторов - я использую эту возможность в образовательных целях! Или это тоже нельзя? Где написано?
Вот и я особо не вижу смысла доказывать какие-то очевидные вещи
Кто-то просил что-то доказывать? Я выдвинул лишь предположение, после которого сразу сказал - цитирую - Не вижу смысла, если это не будет решать вопросы темы. Мне этот вопрос совершенно был не интересен, ибо, повторюсь - я выдвинул всего-лишь предположение на единственном имеющемся примере, подходящим под тему вопроса!
P.P.S. Если следовать твоей логике, то я могу скачать отсюда приложение, декомпилировать его, снять защиту, снова собрать и пользоваться? А что, ссылка есть, значит, "подразумевает открытый доступ". Написано на .NET, значит "автор сам все знает". Так?
Да, именно так! Более того - я вам могу открыто этот код показать! Только вот вы не пользовались моим продуктом и не знаете, что есть несколько причин, по которым этого никто делать не будет!

Александр Ривилис, вот от вас не ожидал. Бравируете сообщениям на форуме, не касающимся темы вопроса....

И все-же, в попытке уйти от оффтопа, я попробую вернуться к своему вопросу! Используя различные виды Overrules (причем, не используя среди них DrawOverrule), расширенные данные и OPMNetExt (вроде ничего не упустил) можно создать - давайте введем новое условное название - некое упрощенное подобие ProxyEntity. Если за основу этого условного объекта взять блок, то при открытии чертежа без плагина, мы будем иметь обычные анонимные блоки.
Еще раз о главном - я говорю в теории! Допустим, если в этот список включить DrawOverrule и за основу брать любой другой примитив, то при открытии файла без плагина мы будем получать простой примитив!
Теоретически - есть еще варианты?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Ривилис, вот от вас не ожидал. Бравируете сообщениям на форуме, не касающимся темы вопроса....
В первую очередь я "бравировал" вот этому:
Если приложение оставляет после себя Proxy, то это однозначно Custom Entity. Тут без вариантов. Но это и не отменяет того факта, что в приложении могут параллельно с этим использоваться инструменты Overrule.
По поводу лицензионной чистоты декомпиляции чужих кодов я молчу - считаю, что в образовательных целях это допустимо. Если бы в своё время я этого не делал, то приличное количество функций из ObjectARX и AutoCAD .NET API, которые остаются не документированными, так и остались бы неизвестными.
OPMNetExt
Это библиотека, написанная на mixed C++, т.е. она содержит в себе элементы и ObjectARX и AutoCAD .NET API
Думаю, что и SPDS Extension сделана аналогично (лезть в неё мне не интересно).

P.S.: По теме здесь уже всё сказано. Или нормальный Custom Entity (т.е. ObjectARX), что в отсутствии dbx приводит к proxy-объектам или куча разных Overrule, Jig, событий и т.д. - и это всё только для того, чтобы при наличии приложения было некое упрощенное подобие Custom Entity.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Александр Пекшев aka Modis, Цель то какая?
Теоретически - есть еще варианты?
Варианты чего? Сделать собственный примитив не залезая в objectARX?
Если у Вас задача сделать действительно кастомный объект, который и при не загруженном плагине отображался нормально и остаться в рамках С#, то наверное стоит посмотреть на MultiCAD.NET API ( https://habrahabr.ru/company/nanosoft/blog/184482/ )

Ввиду двух фактов: а) приложения на .Net легко декомпилируются и б) В интернете масса бесплатных декомпиляторов - я использую эту возможность в образовательных целях! Или это тоже нельзя? Где написано?
Если разговор идет про Autodesk SPDS Extension, то смотрите пункт 3.2 лицензионного договора, с которым Вы согласились устанавливая это ПО.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Вот интересно мне знать - ну и что и где я нарушил? Какие авторские права? Я использую чужой декомпилированный код? Нет!
Вскрытие произведено с целью изучения механизмов работы для возможного последующего применения их в своих разработках. Что запрещено по ст. 14 п.3 закона РФ "О правовой охране программ для электронных вычислительных машин и баз данных" ст. 1280 п.3 ГК РФ
Вы где-то видели, чтобы я выкладывал в открытый доступ? Нет! Или вы считаете картинку с 10 строчками, ничего не раскрывающими, выкладыванием чужого декомпилированного кода???
Это часть чужого кода, полученная незаконным путем. Размер этой части и ее состав сути дела не меняют.
Тем более, цитирую - "да и не работают сборки для автокада после большинства из них".
Речь шла об обфускаторах и шифраторах.
Да, именно так! Более того - я вам могу открыто этот код показать!
Покажите, будет интересно посмотреть.
Ввиду двух фактов: а) приложения на .Net легко декомпилируются и б) В интернете масса бесплатных декомпиляторов - я использую эту возможность в образовательных целях! Или это тоже нельзя? Где написано?
В тексте закона и лицензионного соглашения. Помимо этого, есть еще такое понятие, как "профессиональная этика".
« Последнее редактирование: 05-05-2017, 12:07:41 от Дмитрий Загорулькин »

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
По поводу лицензионной чистоты декомпиляции чужих кодов я молчу - считаю, что в образовательных целях это допустимо. Если бы в своё время я этого не делал, то приличное количество функций из ObjectARX и AutoCAD .NET API, которые остаются не документированными, так и остались бы неизвестными.
А вот у Вас вскрытие произведено для изучения с целью обеспечения взаимодействия с программным продуктом, если иным способом это никак не изучить. Все в соответствии с законом, по крайней мере в РФ.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Что запрещено по ст. 14 п.3 закона РФ "О правовой охране программ для электронных вычислительных машин и баз данных"
Документ утратил силу в 2008 году. Старательней ищите информацию ))
Покажите, будет интересно посмотреть.
Прям тут? Оффтопить будем?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Документ утратил силу в 2008 году. Старательней ищите информацию ))
Принимается, исправил.
Прям тут?
Да в любом удобном для Вас доступном для свободного скачивания месте.

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Да в любом удобном для Вас доступном для свободного скачивания месте.
Пожалуйста. Все до безобразия просто:
Код - C# [Выбрать]
  1. // Проверка того, что функция купленна
  2. public static bool IsFunctionBought(string name, string availCad)
  3. {
  4.     try
  5.     {
  6.         // Расположение файла конфигурации
  7.         var confF = MpSettings.FullFileName;
  8.         // Грузим
  9.         var configFile = XElement.Load(confF);
  10.         // Проверяем есть ли группа Config
  11.         // Если нет, то false
  12.         if (configFile.Element("Config") == null)
  13.             return false;
  14.         var element = configFile.Element("Config");
  15.         // Проверяем есть ли подгруппа Functions
  16.         // Если нет, то false
  17.         if (element != null && element.Element("Functions") == null)
  18.             return false;
  19.         var confFuncsXel = element?.Element("Functions");
  20.         // Проходим по функциям в файле
  21.         if (confFuncsXel != null)
  22.             foreach (var func in confFuncsXel.Elements("function"))
  23.             {
  24.                 var nameAttr = func.Attribute("Name");
  25.                 if (nameAttr != null && nameAttr.Value.Equals(name))
  26.                 {
  27.                     var availVersion = string.Empty;
  28.                     var availCadAttr = func.Attribute("AvailCad");
  29.                     if (availCadAttr != null)
  30.                         availVersion = availCadAttr.Value;
  31.                     var availProdAttr = func.Attribute("AvailProductExternalVersion");
  32.                     if (availProdAttr != null)
  33.                         availVersion = availProdAttr.Value;
  34.                     if (!string.IsNullOrEmpty(availVersion) & availVersion.Equals(availCad))
  35.                     {
  36.                         var activeKey = func.Attribute("ActiveKey")?.Value;
  37.                         if (string.IsNullOrEmpty(activeKey)) return false;
  38.                         if (activeKey == EncDec.MDString(availCad + MpVars.RegistryKey + name)) return true;
  39.                         return false;
  40.                     }
  41.                 }
  42.             }
  43.         return false;
  44.     }
  45.     catch (System.Exception exception)
  46.     {
  47.         MpExWin.Show(exception);
  48.         return false;
  49.     }
  50. }
  51.  
  52. public static string MDString(string s)
  53. {
  54.     var md = MD5.Create();
  55.  
  56.     //Create a new instance of ASCIIEncoding to
  57.     //convert the string into an array of Unicode bytes.
  58.     var enc = new ASCIIEncoding();
  59.  
  60.     //Convert the string into an array of bytes.
  61.     var buffer = enc.GetBytes(s);
  62.  
  63.     //Create the hash value from the array of bytes.
  64.     var hash = md.ComputeHash(buffer);
  65.  
  66.     return hash.Aggregate(string.Empty, (current, b) => current + b.ToString("x2"));
  67. }

Будете делать "кряк" или часть 4 ГК РФ Вас остановит? ))))

UPD: Более того - после ваших сообщений я даже планирую добавить к продукту лицензионное соглашение в котором дам свое согласие на декомпиляцию и использование кода

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Я, честно говоря, ожидал увидеть проект Visual Studio.
UPD: Более того - после ваших сообщений я даже планирую добавить к продукту лицензионное соглашение в котором дам свое согласие на декомпиляцию и использование кода
Зачем такие сложности? Выложите исходники сразу. А вообще, дело хозяйское. Автор приложения - Вы, распоряжайтесь им как угодно.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А вот у Вас вскрытие произведено для изучения с целью обеспечения взаимодействия с программным продуктом, если иным способом это никак не изучить. Все в соответствии с законом, по крайней мере в РФ.
Кстати, использование dumpbin.exe и Dependency Walker для получения сигнатур методов неоднократно рекламировали и применяли ребята из ADN DevHelp в своём блоге: http://adndevblog.typepad.com
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Я, честно говоря, ожидал увидеть проект Visual Studio
Тут уже сложнее =))

И при декомпиляции чужого кода я не получаю готовый проект, как впрочем и рабочий код))

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Кстати, использование dumpbin.exe и Dependency Walker для получения сигнатур методов неоднократно рекламировали и применяли ребята из ADN DevHelp в своём блоге: http://adndevblog.typepad.com
Так ведь это вообще не декомпиляция. Так что, все в рамках этики и закона :) С Dependency Walker, кстати, не знаком. Надо будет попробовать как-нибудь.
И при декомпиляции чужого кода я не получаю готовый проект, как впрочем и рабочий код))
Это смотря что, чем и как декомпилировать ;)
Тут уже сложнее =))
Да ладно, на файлообменнике поместится! Выкладывайте :)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Так ведь это вообще не декомпиляция. Так что, все в рамках этики и закона :)
Не скажи. Кстати dumpbin.exe позволяет выполнить и полную декомпиляцию (опция /DISASM). В своё время использовал её для понимания как работать с меткой учебной версии...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Если у Вас задача сделать действительно кастомный объект, который и при не загруженном плагине отображался нормально и остаться в рамках С#
Судя по всему, использование этого инструмента тоже повлечет за собой наличие Proxy-объектов. Из описания:
Цитировать
для загрузки модуля в AutoCAD требуется модуль расширения (Object Enabler)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Судя по всему, использование этого инструмента тоже повлечет за собой наличие Proxy-объектов. Из описания:
Цитировать

    для загрузки модуля в AutoCAD требуется модуль расширения (Object Enabler)
Да и внешний вид примитива без этого модуля будет вряд ли такой, как с ним.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение