Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: domax от 07-04-2016, 18:01:00
-
Спасибо.
Переключаюсь на SharpDev в надежде, что все получится. Хотелось бы, конечно, немножко где-то почитать о нем, но это уже другая тема. Главное, чтобы не было конфликтов при попытке программирования под Автокад.
Если у кого-то есть опыт программирования под Автокад именно на SharDev (нюансы какие-то, "подводные камни" и пр.), то посоветуйте, пож-та, куда обратиться.
А в целом, благодарю за ответы, хоть и не настолько утешительные.
Думаю, тема закрыта.
-
К сожалению помочь с AutoCAD 2007 я не смогу, т.к. самая ранняя установленная у меня версия 2008.
Для ознакомления с AutoCAD .NET API 2007 тебе желательно скачать ObjectARX SDK 2007: http://download.autodesk.com/esd/objectarx/2007/Arx_All.exe
В справке есть раздел AutoCAD Managed Class Reference:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F29408%2F7842324.5%2F0_11fbc8_1c040076_orig.png&hash=13d72a11ce21676abb35b926be7dcc01)
И некоторое количество примеров в подкаталоге: samples\dotNet
-
Александр, спасибо, но есть, все-таки, еще вопросы по этой теме.
1. С# express edition vs SharpDev - что лучше?
2. Какую версию SharpDev мне нужно избрать для программирования под Автокад 2007?
ARX_All.exe я загрузил и справку их изучаю. Маловато, конечно, и все опирается на VS 2005, причем, не express edition, что меня смущает.
Еще: прошу прощения, что такой же почти вопрос написал прежде на той, первой, ветке. Потом только понял, что нужно сюда переселиться.
-
1. С# express edition vs SharpDev - что лучше?
Смотря по каким критериям оценивать. Оба продукта бесплатны, так что ничто не мешает попробовать оба. Обращать внимание следует (имхо), в первую очередь на наличие/отсутствие возможности запуска AutoCAD под отладчиком. Если практикуется удалённая отладка, то проверить и её.
-
1. С# express edition vs SharpDev - что лучше?
Поставь и то и другое и поэкспериментируй. C# express я вообще не пользовался, SharpDevelop - очень давно и немного.
2. Какую версию SharpDev мне нужно избрать для программирования под Автокад 2007?
AutoCAD 2007 устанавливает .NET 2.0 и по-умолчанию работает именно с ним. Так что нужна версия, в которой можно установить использование .NET 2.0
Маловато, конечно, и все опирается на VS 2005, причем, не express edition, что меня смущает.
На версию VS там вообще нет никакого упора, кроме того, что для чистого ObjectARX следует использовать только VS 2005. Managed (т.е. AutoCAD .NET API) это не касается.
P.S.: Только что проверил, что VS 2015 Community Edition прекрасно компилирует примеры .NET проектов из ObjectARX SDK 2007, выставляя версию .NET 2.0:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F103091%2F7842324.5%2F0_11fbcc_33492f9a_orig.png&hash=a88e49a4766e3b50b9765b70691a9764)
Так что можешь ставить её. Она бесплатна и по функциональности близка к версии Professional с какими-то небольшими ограничениями (таблица сравнения версий: https://www.visualstudio.com/products/compare-visual-studio-2015-products-vs )
-
Она бесплатна
Не совсем, лицензия хитрая, пара пунктов звучат как-то так(по памяти, сорри если что напутал.):
1. Пользоваться можно для некоммерческих предприятий.
2. для коммерческих предприятий использовать нельзя
3. коммерческое предприятие - это предприятие которое зарабатывает в год более 1 млн. долларов
в 3 пункте запрещается использование если контора с большой прибылью!
также в лицензии майкрософт дают расшифровку предприятия, по объему прибыли, без юридического образования сложно судить, не вступает ли пункты 2,3 в противоречие местным законам и их определению коммерческого предприятия.
С# express edition vs SharpDev - что лучше?
С# express пользовался, в принципе то же что и платная студия, только расширения на нее нельзя поставить, для разработки под автокад подходит без проблем.
SharpDev не пользовался, для автокада скорее всего разницы не будет на С# express edition или SharpDev или в блокноте написан текст программы, компилироваться то будет все равно через компилятор NET.
-
С# express пользовался, в принципе то же что и платная студия, только расширения на нее нельзя поставить, для разработки под автокад подходит без проблем.
На Community Edition можно ставить расширения (https://i.gyazo.com/e8d1ea45f5d1030b570d60d88d7cea81.png), но не все.
В свое время, когда не было Community Edition, пользовался SharpDev. В общем если есть возможность использовать VS, то её и используйте.
В SharpDev были проблемы с IntelliSense, NuGet не было и еще по мелочам...
-
На версию VS там вообще нет никакого упора, кроме того, что для чистого ObjectARX следует использовать только VS 2005. Managed (т.е. AutoCAD .NET API) это не касается.
Александр, вот небольшой копипаст из Автокад managed class reference (2007):
"AutoCAD and ObjectARX are now built using Microsoft® Visual Studio® 2005 and Visual C++® 2005. Third-party developers must rebuild their ObjectARX applications in this environment in order to run on AutoCAD 2007."
По-моему, очень даже конретно упоминают и привязывают. Там даже инструкция по переходу на эту студию.
P.S.: Только что проверил, что VS 2015 Community Edition прекрасно компилирует примеры .NET проектов из ObjectARX SDK 2007, выставляя версию .NET 2.0:
Очень большое спасибо за проверку. Получается, как ни крути, но даже с Сшарпом невозможно будет создавать надстроек с собственными примитивами, как Вы написали в первой ветке:
"Свои" примитивы - это только ObjectARX. Это пожалуй единственное, что нельзя сделать при помощи AutoCAD .NET API (C#/VB.NET) по сравнению с ObjectARX."
Или я неправильно понял Вас.
-
Очень большое спасибо за проверку. Получается, как ни крути, но даже с Сшарпом невозможно будет создавать надстроек с собственными примитивами, как Вы написали в первой ветке:
"Свои" примитивы - это только ObjectARX. Это пожалуй единственное, что нельзя сделать при помощи AutoCAD .NET API (C#/VB.NET) по сравнению с ObjectARX."
Или я неправильно понял Вас.
Правильней так: "или то, что мне пишут я читаю через строчку".
-
Александр, вот небольшой копипаст из Автокад managed class reference (2007):
"AutoCAD and ObjectARX are now built using Microsoft® Visual Studio® 2005 and Visual C++® 2005. Third-party developers must rebuild their ObjectARX applications in this environment in order to run on AutoCAD 2007."
По-моему, очень даже конретно упоминают и привязывают. Там даже инструкция по переходу на эту студию.
Ты всё перепутал:
1) Этот раздел относится к чистому ObjectARX, а не к AutoCAD .NET API (managed)
2) Этот раздел относится к миграции с ObjectARX 2006 и VS 2002
Получается, как ни крути, но даже с Сшарпом невозможно будет создавать надстроек с собственными примитивами, как Вы написали в первой ветке:
"Свои" примитивы - это только ObjectARX. Это пожалуй единственное, что нельзя сделать при помощи AutoCAD .NET API (C#/VB.NET) по сравнению с ObjectARX."
Или я неправильно понял Вас.
Правильно понял. Но я в этом не вижу никакой проблемы. Профессиональные C++ программисты (т.е. те, которые зарабатывают созданием программ) переходят к Custom Entity (собственные примитивы) не раньше, чем через год изучения ObjectARX. Это очень специфичный и трудный раздел ObjectARX, имеющий сотни подводных камней. Создавать Custom Entity для себя или для небольшого коллектива не имеет никакого смысла - это просто бесполезная трата времени.
Есть другой неприятный нюанс. В системных требованиях AutoCAD 2007 последняя версия Windows XP ( https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/System-requirements-for-AutoCAD-2007.html ), а у VS 2015 самая минимальная версия Windows 7 SP1 ( https://www.visualstudio.com/en-us/downloads/visual-studio-2015-system-requirements-vs.aspx#1 )
Так что для разработки тебе необходима как минимум Windows 7 SP1, а вот насколько хорошо будет в ней работать AutoCAD 2007 - это вопрос. Очень вероятны проблемы, для которых решения нет.
-
Правильней так: "или то, что мне пишут я читаю через строчку".
Не вижу, где я тут читаю через строчку. Если я что-то неправильно понимаю, то подскажите прямо, для этого и форум.
Я до этого работал в Турбокаде (не сочтите за рекламу, сказать много хорошего о нем не могу и не хочу), который был вынужден избрать после принципиального отказа от пиратского Автокада в 2000г. Это мне немалого стоило. Раньше я в Автокаде не программировал, для моих задач достаточно было того, что есть из коробки. Теперь совсем другие задачи (уровень), поэтому и подход другой. Повторяюсь: если я что-то не так понимаю, просто не поленитесь поправить, буду благодарен.
-
Есть другой неприятный нюанс. В системных требованиях AutoCAD 2007 последняя версия Windows XP ( https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/System-requirements-for-AutoCAD-2007.html ), а у VS 2015 самая минимальная версия Windows 7 SP1 ( https://www.visualstudio.com/en-us/downloads/visual-studio-2015-system-requirements-vs.aspx#1 )
Так что для разработки тебе необходима как минимум Windows 7 SP1, а вот насколько хорошо будет в ней работать AutoCAD 2007 - это вопрос. Очень вероятны проблемы, для которых решения нет.
Да, понял. У меня сейчас как раз стоит семерка, Автокад в ней работает в режиме удаления проблем несовместимости (т.е. указываю режим Вин ХР).
Насчет трудности создания своих примитивов тоже понял, надо переосмыслить задачу, может быть, получится избежать. В связи с этим такой вопрос: если мне удастся переделать алгоритм выполнения задачи так, что отпадет необходимость в создании собственных примитивов, то как легче воплотить (Лисп/Бейс/Шарп)? Или это слишком общий вопрос?
Ты всё перепутал:
1) Этот раздел относится к чистому ObjectARX, а не к AutoCAD .NET API (managed)
Я читал файл acad_mgd.chm. Какой раздел мне тогда нужен?
-
Windows 7 SP1, а вот насколько хорошо будет в ней работать AutoCAD 2007
2005 на Windows 7 работал нормально, 2008 тоже, по идее и 2007 должен поработать.
не встречал ошибок автокад+система, если кто встречал опишите в чем проявлялись ошибки.
-
Я читал файл acad_mgd.chm. Какой раздел мне тогда нужен?
При его открытии открывается вся справка по ObjectARX, а не только то, что относится к AutoCAD .NET API. Только то, что в красном прямоугольнике непосредственно относится с .NET:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F114704%2F7842324.5%2F0_11fbdd_42bb97b_orig.png&hash=8e802cd7bb628e7634f3467358722f74)
В связи с этим такой вопрос: если мне удастся переделать алгоритм выполнения задачи так, что отпадет необходимость в создании собственных примитивов, то как легче воплотить (Лисп/Бейс/Шарп)? Или это слишком общий вопрос?
Вопрос слишком общий, т.к. неизвестна задача и неизвестна твоя квалификация. Как я понял lisp/vb тебе незнакомы и ты знаешь C/C++. Переход на C# мне кажется наиболее простым. У lisp'а совсем другой синтаксис и очень (!!!) ограниченные возможности по созданию диалогов. vba/vb.net я не рассматриваю по "религиозным" соображениям. :)
-
vba/vb.net я не рассматриваю по "религиозным" соображениям
1. То есть???
2. По поводу справки для AutoCAD .NET API понял. Неприятно, что так протормозил. Я понял, что мне нужен Шарп с Фреймворком 2 (как для Автокад 2007).
3. А разве я имею право пользоваться Мультикадом в коммерческих (хоть и небольших) целях?
-
Не вижу, где я тут читаю через строчку. Если я что-то неправильно понимаю, то подскажите прямо, для этого и форум.
Судя по этой фразе:
Получается, как ни крути, но даже с Сшарпом невозможно будет создавать надстроек с собственными примитивами, как Вы написали в первой ветке:
"Свои" примитивы - это только ObjectARX. Это пожалуй единственное, что нельзя сделать при помощи AutoCAD .NET API (C#/VB.NET) по сравнению с ObjectARX."
Через строчку читалось это (http://adn-cis.org/forum/index.php?topic=7012.msg19573#msg19573) сообщение, иначе не было бы этого самого "как ни крути".
-
Цитата: Александр Ривилис от 08-04-2016, 11:41:34
vba/vb.net я не рассматриваю по "религиозным" соображениям
1. То есть???
Это была шутка. Просто я их не рассматриваю в качестве языков разработки.
3. А разве я имею право пользоваться Мультикадом в коммерческих (хоть и небольших) целях?
Я бы честно говоря не стал бы его рассматривать и по другим соображениям. Это дополнительная "прокладка" между твоей программой и AutoCAD. Одно дело, когда ею пользуются её разработчики, имеющие возможность оперативно исправить в ней ошибки. По поводу лицензии - это смотри сам.
-
3. А разве я имею право пользоваться Мультикадом в коммерческих (хоть и небольших) целях?
А что мешает поискать ответ на ресурсах сайта нанософта?
-
А что мешает поискать ответ на ресурсах сайта нанософта?
В принципе, в интернете действительно можно найти очень многое, но для того форумы и существуют, чтобы воспользоваться "коллективным" разумом, т.е., если ты уже что-то знаешь, то поделись, я знаю - тоже поделюсь. В этом смысл таких общений. Что-то типа ГНУ-лицензии :)
-
Ну так форумы в первую очередь для того и существуют, чтобы поиском в них можно было найти то, что уже раньше кем-то обсуждалось, чтобы не мусолить одно и то же по 100 раз. :) Если уж ничего не найдено, тогда конечно, но вряд ли обозначенную информацию трудно будет найти.
-
Я бы честно говоря не стал бы его рассматривать и по другим соображениям. Это дополнительная "прокладка" между твоей программой и AutoCAD. Одно дело, когда ею пользуются её разработчики, имеющие возможность оперативно исправить в ней ошибки.
Понял. Пока в ту сторону смотреть не буду, чтобы не распыляться.
Просто я их не рассматриваю в качестве языков разработки.
А по поводу Бейса я читал, что это самый короткий путь по организации плодотворного сотрудничества между приложениями, его поддерживающими. Мне трудно им пользоваться исключительно по годами въевшейся привычке синтаксиса С/С++.
-
Бейсик калечит мозг - об этом пишут довольно авторитетные программисты. Чем не устроил C++, если уж пишешь на нём годами? В чём смысл метаний? "Воплощать" всегда проще на том, чем уже владеешь. Тебе в любом случае придётся изучать API, будь то ObjectARX или AutoCAD .NET API. В случае .NET в нагрузку идёт ещё и изучение выбранного языка. Это уж тебе самому нужно сопоставлять стоимость затрат и конечных результатов.
-
Чем не устроил C++, если уж пишешь на нём годами? В чём смысл метаний?
Смысл в том, что для написания АRX-приложений на С++ нужен MSVS 2005 (т.е. версия 8), а у меня - 2003 (т.е. 7.1) и они несовместимы в плане написания под Автокад 2007. Нужен только 2005, при этом на экспрессе далеко не уедешь без МФС. Вот, совственно, и вся причина. У меня, как я писал, есть 2003-ий проф., купленный когда-то у дилера и теперь я в положении переезда на новое место жительства. Понятно объяснил?
-
А в компании так же используется AutoCAD 2007? :) А то можно писать под 2007-й, только результат не будет работать на 2013 и т.п.
-
А в компании так же используется AutoCAD 2007? :) А то можно писать под 2007-й, только результат не будет работать на 2013 и т.п.
Дело в том, что я отправляю заказчику не чертежи, а ПДФ-файлы, т.е. без редактирования, поэтому абс. неважно, каким продуктом я это сделаю.
-
Дело в том, что я отправляю заказчику не чертежи, а ПДФ-файлы, т.е. без редактирования, поэтому абс. неважно, каким продуктом я это сделаю.
Я не о том. Не важно что ты отправляешь заказчику. Если твой код предназначен только для личного использования, т.е. работать на купленном тобой AutoCAD 2007, установленном на одном-двух машинках - это одно, а если ты хочешь, чтобы твоё приложение так же работало и на компьютерах др. сотрудников твоей компании, то и у них должны быть AutoCAD 2007-2009, чтобы код, написанный тобой на C++ работал.
Кроме того, насколько тебе действительно необходимо создавать собственные типы объектов в AutoCAD? Возможно то, что тебе нужно - вполне можно решить средствами динамических и аннотативных блоков. Нередко начинают заниматься велосипедостроением (которого можно было бы избежать) в виду недостатка знаний по основному функционалу AutoCAD. Если же всё таки создавать эти типы тебе и в самом деле очень нужно, то следует учитывать и такой момент, что сегодня ты передаёшь в PDF формате, а завтра у тебя потребуют в DWG и все экземпляры твоих объектов у них откроются через задницу (т.е. превратятся в proxy) в виду того, что писал ты под 2007-й, а у заказчика 2016-й. Даже если у заказчика будет 2007, то это ничего не меняет - он всё равно получит proxy, ведь твоего кода, который корректно отображает и выводит на печать твои объекты у него не будет. Т.е. тебе придётся писать так называемые "энейблеры" под разные версии акада, чтобы твои чертежи корректно в них отображались.
Кроме того, каждый раз устанавливать себе левый дополнительный софт [плагин, непонятно чей, не понятно что делающий] лишь для того, чтобы открыть очередной DWG не каждый заказчик захочет (и его можно понять). Так что подумай, действительно ли это [создание своих типов] стоит тех дополнительных усилий, которые тебе придётся прикладывать и той дополнительной ответственности.
Если всё же потребность в пользовательских типах не настолько остра (что я сильно подозреваю) и можно обойтись без неё и покупать новую IDE не хочется, тогда нет смысла заморачиваться с ObjectARX и имеет смысл смотреть в сторону .NET.
-
Спасибо, Андрей, я действительно задумаюсь, насколько насущно все то, что я задумал, и нет ли более легких путей. О диноблоках знаю, это не то. Буду думать. Твои замечания в последнем посте о несовместимости версий и возможных производствах "костылей" всяких действительно заставляют задуматься.
-
Если AutoCAD 2007 использует .NET Framework 2.0, то писать под него код лучше на .NET Framework 3.5 SP1, хотя бы ради того же LINQ (да и много чего ещё)... Версия ядра CLR у них одна и та же: 2.0. Использовать для GUI платформу WPF наверное не получится и придётся ограничиться WinForms, т.к. в AutoCAD 2007 не будет методов открытия окон класса Window (в т.ч. модальных). Придётся использовать Form. Можно попробовать открывать их [Window] там обычном способом [Show, ShowModal] - если AutoCAD не будет фаталить, то может удастся заюзать и WPF (но я бы на это сильно не надеялся)...
-
Придётся использовать Form.
Возможности Form перекрывают MFC в C++
-
Возможности Form перекрывают MFC в C++
По сравнению с WPF, WinForms нервно курит в сторонке. :) Если удастся заюзать WPF, то лучше использовать именно её... Правда код нужно будет тестировать как следует :)
-
Кстати, существует высокая вероятность того, что .NET расширение, написанное под AutoCAD, достаточно будет скомпилировать лишь дважды: под AutoCAD 2007 и под AutoCAD 2013. Результат, как правило, будет работать в AutoCAD 2007 и всех более новых версиях. Причём с высокой степенью вероятности можно будет компилировать сразу под AnyCPU.
А вот с расширениями AutoCAD, написанными на C++ такой фокус не пройдёт.... Придётся компилировать под AutoCAD 2007, 2010, 2013, 2015. Причём компилировать отдельно под x86 и отдельно под x64.
Это тебе дополнительная информация к размышлению. :)
-
Спасибо за конкретные и дельные советы. Как бывший программист, понимаю их ценность. Как-то так получилось, что на шарпе не писал ничего: С++ все покрывал, все нужды, пока не столкнулся с Автокадом. Хотя, было дело, еще сайт нужно было срочно для фирмы нашей сделать, так я думал, что слету JS осилю, он ведь сишный прототип, думалось, а пришлось прежде немного повозиться с нюансами.
Я просто еще не знаю нюансов Шарпа, его достоинств, поэтому и боюсь оставлять знакомый С++. Опять же, время - невосполнимый ресурс, пытаюсь не распыляться, я же не студент, у которого все впереди.
Очень ободрило замечание по поводу того, что возможности Forms более MFC, а про WPF я и не мечтал в данном ракурсе. Короче, надо пробовать, читать их документацию, смотреть примеры, задавать вопросы.
Если смогу впоследствии кому-то помочь, буду рад.
Хоть тема ветки и называется SharpDevelop и AutoCAD 2007, но получилось, что предположительно все-таки лучше и надежней Комьюнити.
Если у кого-то еще будут замечания, советы, то, пожалуйста, делитесь.
-
Если у кого-то еще будут замечания, советы, то, пожалуйста, делитесь.
Я думаю, что как только ты начнешь что-то писать под AutoCAD, то у тебя самого появятся вопросы. Этот форум для того и создан, чтобы на них отвечать.
-
Я думаю, что как только ты начнешь что-то писать под AutoCAD, то у тебя самого появятся вопросы. Этот форум для того и создан, чтобы на них отвечать.
Александр, Андрей, спасибо за толчок с мертвой точки. Для меня это всегда очень трудно - избрать, в каком направлении двигаться.