В .Net достаточное количество возможностей, чтобы сделать "кастомные" объекты и не использовать при этом ObjectARX. Кто скажет "невозможно", отвечу - возможно! Если погулять по гуглу, то можно найти тему где это уже было реализовано почти 5 лет назад. И реализовано это на основе обычных анонимных блоках. Т.е. если плагин есть - эти объекты работают как "кастомные" - и есть ручки, и свои свойства, и стили, прочие атрибуты. Если открыть чертеж без плагина - эти объекты превращаются в обычные анонимные блоки. И это круто!Бред. Ты путаешь мягкое с теплым. Далеко не всё, что можно сделать в Custom Entity можно сделать в .NET
Хотя частично получалось:Насколько я помню это можно сделать при помощи обычного динамического блока.
Бред. Ты путаешь мягкое с теплым. Далеко не всё, что можно сделать в Custom Entity можно сделать в .NETНу я не спорю, что не все. Но при первом приближении, на мой взгляд, средств .Net достаточно. Возьмем для примера СПДС-модуль и самые распространенные элементы - отметка, сечение, выноска, обозначение узла и т.п. Мне думается, что возможности этих примитивов вполне можно реализовать средствами
Насколько я помню это можно сделать при помощи обычного динамического блокаМожно конечно, не спорю. Смысл был не в реализации конкретного элемента, а в осознании темы "свои примитивы"
ну есть и у меня такие модули, ничего особо сложного в этом нет, код обсуждали тут (http://adn-cis.org/forum/index.php?topic=7251.0), тут (http://adn-cis.org/forum/index.php?topic=7545.msg24101#msg24101) и тут (http://forum.dwg.ru/showthread.php?p=1607823#post1607823)Судя по ссылкам - у вас модули, обрабатывающие динамические блоки. Тот пример, что в топике в ссылке (да и в видео) не использует динамических блоков - там все программно создается
Дмитрий Загорулькин, а можете показать видео реализации?В основном, я это делаю с объектами Civil 3D. Показать могу, но вряд ли поймете в чем суть.
К вопросу, в частности, о DrawableOverrule - я правильно понимаю, что если я сделал переопределение видимости, например, отрезка, то при открытии файла без плагина (создающего переопределение) я буду видеть именно отрезок?Правильно.
Просто я пытаюсь подойти к изучению вопроса сразу с этого момента - что будет в файле без плагина? Вариант переопределения на основе блока как-раз таки и решает эту проблему.Какую проблему?
Какую проблему?Ну может слово "проблема" не совсем подходящее)) Я хочу начать освоение Overrules сразу учитывая, чтобы графика осталась в чертеже без наличия плагина, создающего переопределения
чтобы графика осталась в чертеже без наличия плагина, создающего переопределенияDrawableOverrule изменяет отображение объекта, но если объект будет выглядеть одинаково с перерисовкой (с плагином) и без перерисовки (без плагина), то в чем тогда будет заключаться перерисовка?
Если взять тот-же СПДС-модуль, который практически сделан на Overrules - там переопределенные объекты остаются как ProxyТам не Overrules, а как раз таки Custom Entities
Там не Overrules, а как раз таки Custom EntitiesТам как-раз таки Overrules:
DrawableOverrule изменяет отображение объекта, но если объект будет выглядеть одинаково с перерисовкой (с плагином) и без перерисовки (без плагина), то в чем тогда будет заключаться перерисовка?В том-же, в чем и смысл СПДС-модуля или Custom-Entity - создание "своих примитивов" с определенными свойствами. Да, многое можно решить динамическими блоками, но далеко не все.
Там как-раз таки Overrules:Поспорим? :)
Не вижу смысла, если это не будет решать вопросы темы =)Там как-раз таки Overrules:Поспорим? :)
В статье есть ссылка на скачивание, что само собой подразумевает открытый доступ (т.к. C# декомпилируется и все авторы это знают)Шедевральная фраза! Вообще, при наличии определенных навыков, можно любую библиотеку декомпилировать. Но это не значит, что можно это делать! Есть такое понятие, как авторское право. И если автор сам не выложил исходный код, то, очевидно, что он не собирается им делиться. То, что .NET библиотеки легче вскрываются, чем другие, абсолютно ничего не меняет! Мало ли что авторы знают! Не у всех есть деньги на обфускаторы и шифраторы, да и не работают сборки для автокада после большинства из них.
Вот и я особо не вижу смысла доказывать какие-то очевидные вещиКто-то просил что-то доказывать? Я выдвинул лишь предположение, после которого сразу сказал - цитирую - Не вижу смысла, если это не будет решать вопросы темы. Мне этот вопрос совершенно был не интересен, ибо, повторюсь - я выдвинул всего-лишь предположение на единственном имеющемся примере, подходящим под тему вопроса!
P.P.S. Если следовать твоей логике, то я могу скачать отсюда приложение, декомпилировать его, снять защиту, снова собрать и пользоваться? А что, ссылка есть, значит, "подразумевает открытый доступ". Написано на .NET, значит "автор сам все знает". Так?Да, именно так! Более того - я вам могу открыто этот код показать! Только вот вы не пользовались моим продуктом и не знаете, что есть несколько причин, по которым этого никто делать не будет!
Александр Ривилис, вот от вас не ожидал. Бравируете сообщениям на форуме, не касающимся темы вопроса....В первую очередь я "бравировал" вот этому:
Если приложение оставляет после себя Proxy, то это однозначно Custom Entity. Тут без вариантов. Но это и не отменяет того факта, что в приложении могут параллельно с этим использоваться инструменты Overrule.По поводу лицензионной чистоты декомпиляции чужих кодов я молчу - считаю, что в образовательных целях это допустимо. Если бы в своё время я этого не делал, то приличное количество функций из ObjectARX и AutoCAD .NET API, которые остаются не документированными, так и остались бы неизвестными.
OPMNetExtЭто библиотека, написанная на mixed C++, т.е. она содержит в себе элементы и ObjectARX и AutoCAD .NET API
Теоретически - есть еще варианты?Варианты чего? Сделать собственный примитив не залезая в objectARX?
Ввиду двух фактов: а) приложения на .Net легко декомпилируются и б) В интернете масса бесплатных декомпиляторов - я использую эту возможность в образовательных целях! Или это тоже нельзя? Где написано?Если разговор идет про Autodesk SPDS Extension, то смотрите пункт 3.2 лицензионного договора, с которым Вы согласились устанавливая это ПО.
Вот интересно мне знать - ну и что и где я нарушил? Какие авторские права? Я использую чужой декомпилированный код? Нет!Вскрытие произведено с целью изучения механизмов работы для возможного последующего применения их в своих разработках. Что запрещено по
Вы где-то видели, чтобы я выкладывал в открытый доступ? Нет! Или вы считаете картинку с 10 строчками, ничего не раскрывающими, выкладыванием чужого декомпилированного кода???Это часть чужого кода, полученная незаконным путем. Размер этой части и ее состав сути дела не меняют.
Тем более, цитирую - "да и не работают сборки для автокада после большинства из них".Речь шла об обфускаторах и шифраторах.
Да, именно так! Более того - я вам могу открыто этот код показать!Покажите, будет интересно посмотреть.
Ввиду двух фактов: а) приложения на .Net легко декомпилируются и б) В интернете масса бесплатных декомпиляторов - я использую эту возможность в образовательных целях! Или это тоже нельзя? Где написано?В тексте закона и лицензионного соглашения. Помимо этого, есть еще такое понятие, как "профессиональная этика".
По поводу лицензионной чистоты декомпиляции чужих кодов я молчу - считаю, что в образовательных целях это допустимо. Если бы в своё время я этого не делал, то приличное количество функций из ObjectARX и AutoCAD .NET API, которые остаются не документированными, так и остались бы неизвестными.А вот у Вас вскрытие произведено для изучения с целью обеспечения взаимодействия с программным продуктом, если иным способом это никак не изучить. Все в соответствии с законом, по крайней мере в РФ.
Что запрещено по ст. 14 п.3 закона РФ "О правовой охране программ для электронных вычислительных машин и баз данных"Документ утратил силу в 2008 году. Старательней ищите информацию ))
Покажите, будет интересно посмотреть.Прям тут? Оффтопить будем?
Документ утратил силу в 2008 году. Старательней ищите информацию ))Принимается, исправил.
Прям тут?Да в любом удобном для Вас доступном для свободного скачивания месте.
Да в любом удобном для Вас доступном для свободного скачивания месте.Пожалуйста. Все до безобразия просто:
UPD: Более того - после ваших сообщений я даже планирую добавить к продукту лицензионное соглашение в котором дам свое согласие на декомпиляцию и использование кодаЗачем такие сложности? Выложите исходники сразу. А вообще, дело хозяйское. Автор приложения - Вы, распоряжайтесь им как угодно.
А вот у Вас вскрытие произведено для изучения с целью обеспечения взаимодействия с программным продуктом, если иным способом это никак не изучить. Все в соответствии с законом, по крайней мере в РФ.Кстати, использование dumpbin.exe и Dependency Walker для получения сигнатур методов неоднократно рекламировали и применяли ребята из ADN DevHelp в своём блоге: http://adndevblog.typepad.com
Я, честно говоря, ожидал увидеть проект Visual StudioТут уже сложнее =))
Кстати, использование dumpbin.exe и Dependency Walker для получения сигнатур методов неоднократно рекламировали и применяли ребята из ADN DevHelp в своём блоге: http://adndevblog.typepad.comТак ведь это вообще не декомпиляция. Так что, все в рамках этики и закона :) С Dependency Walker, кстати, не знаком. Надо будет попробовать как-нибудь.
И при декомпиляции чужого кода я не получаю готовый проект, как впрочем и рабочий код))Это смотря что, чем и как декомпилировать ;)
Тут уже сложнее =))Да ладно, на файлообменнике поместится! Выкладывайте :)
Так ведь это вообще не декомпиляция. Так что, все в рамках этики и закона :)Не скажи. Кстати dumpbin.exe позволяет выполнить и полную декомпиляцию (опция /DISASM). В своё время использовал её для понимания как работать с меткой учебной версии...
Если у Вас задача сделать действительно кастомный объект, который и при не загруженном плагине отображался нормально и остаться в рамках С#Судя по всему, использование этого инструмента тоже повлечет за собой наличие Proxy-объектов. Из описания:
для загрузки модуля в AutoCAD требуется модуль расширения (Object Enabler)
Судя по всему, использование этого инструмента тоже повлечет за собой наличие Proxy-объектов. Из описания:Да и внешний вид примитива без этого модуля будет вряд ли такой, как с ним.
Цитировать
для загрузки модуля в AutoCAD требуется модуль расширения (Object Enabler)
Вопрос - чем не CustomEntity? ))Хотя бы тем, что в Панели свойств "это" - вхождение блока. А так вообще симпатично.
Дак всё-таки эти штуки как будут отображаться без модуля?Это обычный анонимный блок
Хотя бы тем, что в Панели свойств "это" - вхождение блокаНу вот единственная проблема. И та существует лишь потому, что разработчики autocad net api решили не делать обертку для палитры свойств. Может и есть на то причины.
Дак всё-таки эти штуки как будут отображаться без модуля? Или например. Без модуля подвигали, а потом снова с модулем.
Это обычный анонимный блокДа, все верно - будет просто анонимный блок. Лично я считаю, что это наилучший вариант в этом случае
Или например. Без модуля подвигали, а потом снова с модулем.И снова с модулем он будет работать как "прокси" примитив
И та существует лишь потому, что разработчики autocad net api решили не делать обертку для палитры свойств. Может и есть на то причины.Причина в том, что для динамических свойств эту обертку сделать достаточно непросто (OPMNetExt), а для статических практически нереально. Имя примитива в Палитре свойств - это статическое свойство.
Александр, при всём уважении к этому немалому труду, меня всё же не покидает уже второй день мысль, что если использовать грамотно настроенный динамический блок, то будет, как минимум, тот же самый функционал. Получается как "из пушки по воробьям". А так - да, очень впечатляюще!Дмитрий, так весь смысл-то совсем в другом! Да, конкретно этот примитив (Линия обрыва) можно решить динамическим блоком. Да и много ещё каких. Но как только вы дойдете, скажем, до линии обозначения сварного шва - вот тут динамический блок уже не поможет. И таких примеров (примитивов) много.
Я сделал две гифки, показывающие некоторые особенности, да и пример работы в целом:Ну что же, по-моему отлично. Так держать!
Гифки упорно не хотели нормально отображатьсяНе всякий хостинг картинок корректно поддерживает анимированные гифки... Они там очень хитрые ребята - не хотят гонять трафик на халяву.
Видимо форум имеет ограничения на длину сообщения, поэтому разбил на дваБыл максимум 60000 символов - ты их видимо превысил.
Кто что думает по этому поводу? Вы бы стали реализовывать аннотативность?Да аннотативность, стоит реализовать.
Вариант без хранения состояния расположения и списка масштабов для объектов более быстрый, удобный и безглючный.Ну хранить состояния я и не собираюсь, а вот список масштабов хранить наверное желательно. Можно конечно брать его с самого блока. Да вот только этот список пользователь может легко очистить.
По хорошему, похоже, нужно добавить свойства Аннотативность - Да/Нет
И в зависимости от него управлять масштабом.
Да вот только этот список пользователь может легко очистить.Для одного объекта да, а если чертеж насыщенный?