Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Дима_ от 23-02-2015, 15:03:00
-
Есть у меня понимание, что через некоторое время (сейчас пока другие задачи решаю) понадобится мне как-то описывать и впоследствии получать данные с пользовательских объектов (сейчас в этом качестве - для описания изделий - используются дин. блоки - но ими, к сожалению описать можно далеко не все геометрические зависимости, да и те которые можно иногда так криво "описываются", что проще уже без них). Собственно вижу 3 варианта решения - использовать родной механизм - ARX, воспользоваться библиотекой multicad'а, или использовать ExtensionDictionary в купе с DrawableOverrule. Да весь "остальной" проект целиком написан на .Net - и это вторая причина (первая - я на arx ничего еще не писал) по которой 1 вариант мне не очень нравится, мультикадом - как-то то же не очень - почему пока не могу объяснить. А вот вариант с Overrule мне пока кажется наиболее понятным и "перспективным". Вопрос - делал-ли кто нибудь что-то подобное и какие есть "подводные камни" - в общем если есть чем поделиться для принятия "стратегического решения" - поделитесь.
з.ы. простой тест на проверку у примитива на "свой" ExtensionDictionary с выводом графики по полученным параметрам прошел успешно - без нареканий.
-
Второй вариант я не рассматриваю, так как не проверял его вообще. Ну и это еще дополнительная зависимость от сторонних разработчиков. Первый вариант с одной стороны даёт максимум возможностей, с другой стороны приводит к появлению прокси в отсутствии OE. Так что если возможностей третьего варианта для тебя достаточно, то можешь остановится на нём. Есть еще вариант 1+3, когда часть кода на mixed C++.
-
Второй вариант я не рассматриваю, так как не проверял его вообще. Ну и это еще дополнительная зависимость от сторонних разработчиков.
Эта самая "дополнительная зависимость" делает код переносимым между различными CAD системами (в отличие от ARX). Я всегда предпочитаю делать выбор в пользу переносимости, а *CAD .NET API Classic + MultiCAD вполне подходят на эту роль.
Дима_, если будешь пробовать второй и третий варианты, то мне было бы интересно ознакомиться с обнаруженными плюсами и минусами (на тот случай, если надумаешь выложить инфу). Поскольку о multicad на данном сайте запрещено упоминат (насколько я понимаю), то обозначенную информацию рекомендую выложить здесь (http://forum.nanocad.ru/index.php?showforum=87). Там же можно будет и пообсуждать результаты, не боясь, что тема будет прикрыта.
-
Поскольку о multicad на данном сайте запрещено упоминать под страхом анафемы, то обозначенную информацию рекомендую выложить здесь.
1) Ты не заметил и уже упомянул. ;)
2) Упоминание и обсуждение альтернативных/конкурирующих CAD-систем на этом форуме запрещено. MultiCAD - это не CAD-система. Запрет касается использования MultiCAD в альтернативных CAD-системах, а в AutoCAD - пожалуйста.
3) Ты мог написать последний абзац Диме в личку.
P.S.: Дальше тему поведения на форуме в этой теме не развиваем. Обсуждение не связанное с темой вопроса я потом снесу.
-
Буду говорить про 3-й вариант, т.к. его прорабатываю уже довольно продолжительное время. Помимо DrawableOverrule, неплохо еще сделать OsnapOverrule - для привязок и TransformOverrule - для возможности взрыва объекта в обычные примитивы AutoCAD, не зависящие от наличия подгруженной dll. Я использовал данные о дополнительной геометрии в ExtDict - ограничений нет никаких, проблем тоже https://screencast.autodesk.com/Main/Details/b8d509a7-5e9f-4d33-885b-5a2a8ea837bd. Сейчас прорабатываю вариант хранения данных о дополнительной геометрии вне чертежа https://screencast.autodesk.com/Main/Details/0ead74d4-642c-43d5-9370-e6d560f35fa6. Если выполнять перерисовку объектов обычного автокада, то, думаю, проблем не будет никаких. Пока что, все мои трудности связаны с тем, что я пытаюсь перерисовать объекты Civil 3D, а там все гораздо "веселее".
-
Вооот, очень хорошая тема! И даже MultiCAD можно обсудить...
Что порадовало, что на начальном этапе создание своего объекта в MultiCAD довольно просто и даже таким неучем, как я, осваивается легко, а вот с деталями как всегда намного сложнее, так как документация хромает на обе ноги. =(
Но вменяемую замену динамическим блокам сделать не сложно.