Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Грасмик Алексей от 04-09-2015, 09:19:10
-
добрый день. у меня проблема с совместимостью моего ПО и autocadов различных версий.
я сделал маленький код на autocad.net 2012 позже переделал его в ObjectARX 2012 но так и не добился главного - работы на всех autocadах.
у нас есть версии 2012 и 2014, причем 2014 соят на windows 2007-64bit и они, как мне кажется, тоже 64 разрядные.
с ObjectARX вообще ничего не получилось, ПО работает только на моем компе на autocad 2012, на других компах с таким же autocad не работает, просто не загружает ARX.
на других компах с autocad 2012 загружается кое-где, а кое где нет - пишет, что не хвататет каких-то зависимых сборок, хотя использую только системные.
вот и вопрос - на чем нужно делать ПО, чтобы оно запускалось на всех autocadах, и на 2012 и на 2014 и на 64 разрядных версиях?
-
позже переделал его в ObjectARX 2012 но так и не добился главного - работы на всех autocadах
И не добьёшься, причём об этом чётко пишут в букварях. Это в .NET ты можешь скомпилировать свой DLL для R17.2 и R19.0, после чего грузить их в AutoCAD 2009-2016 (при определённых условиях). Твоё ARX-приложение будет работать с той версией AutoCAD, под которую ты его компилируешь, а так же с теми более новыми версиями AutoCAD, у которых значение Major совпадает с версией AutoCAD, под который ты компилировал свой код. Формат: R<Major>.<Minor>. Перечислены здесь (http://bushman-andrey.blogspot.ru/2014/04/net-autocad-net-framework-ms-visual.html).
Кроме того, ARX приложения компилируются отдельно под x86 и x64. Это тебе не .NET, где можно откомпилировать под AnyCPU и грузить результат как в x86, так и в x64. Загрузить ARX, скомпилированный под x86 в AutoCAD x64 тебе не удастся, равно как и грузить ARX x64 в AutoCAD x86.
-
Эхххх... если бы можно было так делать....
На Net еще можно объединить сборку под несколько версий автокада. Например для 2013-2016 или 2010-2012. Зависит от кода и настроек файла acad.exe.config. Автокад 2013 является "переломным", поэтому для 2012 и 2014 вы не сделаете единую сборку. Разрядность системы тоже можно опустить, если вы в коде не используете что-то зависимое от разрядности.
С ObjectArx не работал, но как понял - вот там-то вообще хрен что объединишь))
Так что расслабтесь, выпейте чайку и забудьте эту фантазию ;D
-
ну хорошо - фантазия сделать ARX для всех и вся оставляю, как сделать .NET сборку? или 2012 и 2014 точно нельзя объеденить?
а про разрядность? как мне сделать сборку для 2014 нам все разрядности?
при этом на моем компе стоит нормальный windows XP-32, могу ли я скомпилировать сборку чтобы шла на windows 2007-64?
-
Google забанили? Документация испарилась?
Как то ты легко скачешь то на ARX, то на .NET, из чего скорее всего следует, что не знаешь ни того, ни другого...
-
Вы правы, оба этих случая. что делать? поможете?
-
или 2012 и 2014 точно нельзя объеденить?
Можно! Нужно использовать #if #elif #endif....
а про разрядность? как мне сделать сборку для 2014 нам все разрядности?
По-моему в visual studio при создании проекта сразу стоит AnyCPU (для обоих разрядностей)при этом на моем компе стоит нормальный windows XP-32
Он уже устарел морально и физически и официально закрыт))
-
Вы правы, оба этих случая. что делать? поможете?
Прежде всего тебе нужно определиться с тем, на чём будешь писать: либо ObjectARX (т.е. C++), либо один из языков семейства .NET. Если C++, то тогда тебе в другую (http://adn-cis.org/forum/index.php?board=3.0) ветку форума.
Однако в любом случае, тебе сначала нужно ознакомиться с основами языка программирования, на котором будешь писать. Затем, имея базовые знания, можешь приступать к чтению документации (http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112).
-
Можно! Нужно использовать #if #elif #endif....
Ты путаешь совместимость на уровне исходного кода с совместимостью на уровне машинного кода.
-
Можно! Нужно использовать #if #elif #endif....
Ты путаешь совместимость на уровне исходного кода с совместимостью на уровне машинного кода.
Да, ерунду сморозил) Сначала написал, потом подумал. Это я умею ::)
#if #elif #endif я использую, чтобы пользоваться одним кодом для разных сборок
-
#if #elif #endif я использую, чтобы пользоваться одним кодом для разных сборок
Я в курсе того, для чего нужны директивы препроцессора. :)
-
ну спасибо и на том, что написали. на с++ я не смогу видимо делать - у меня студия только 2008, а для нового обжектарх этого мало, значит будет дот-нет.
документацию тут почитаю - может поможет.
-
ну спасибо и на том, что написали.
Не во что.
-
#if #elif #endif я использую, чтобы пользоваться одним кодом для разных сборок
Я в курсе того, для чего нужны директивы препроцессора. :)
А вдруг кто-то, кто не знал про это, увидит и начнет пользоваться?)) Такой-же самоучка как я, который про это не знал. Я лично сам только сравнительно недавно узнал, что один и тот-же файл можно вставлять в проект как ссылку :)
По теме: автору советую начать с освоения цикла статей на хабре:
- http://habrahabr.ru/post/235723/
- http://habrahabr.ru/post/148844/
Сам не читал, но вроде там все хорошо разжевано (нужно, кстати, почитать)
Ну и конечно этот блог - http://through-the-interface.typepad.com/
-
По теме: автору советую начать с освоения цикла статей на хабре:
- http://habrahabr.ru/post/235723/
- http://habrahabr.ru/post/148844/
Сам не читал, но вроде там все хорошо разжевано (нужно, кстати, почитать)
Вот сначала прочитай, потом советуй. :) Я не советую учиться по этим ссылкам, лучше читать документацию, там пошагово всё расписано. После прочтения соответствующих разделов документации можно и почитать (для сравнения)...
-
Грасмик Алексей, тему переименуй, а то название "совместимость по аutocad.net" как-то не вяжется с твоим вопросом об ObjectARX...
-
Грасмик Алексей
ну спасибо и на том, что написали. на с++ я не смогу видимо делать - у меня студия только 2008, а для нового обжектарх этого мало, значит будет дот-нет.
Если пользоваться только этой студией, то в новых версиях AutoCAD тоже будут проблемы: самая новая версия .NET, которую VS 2008 поддерживает - .NET 3.5. При этом AutoCAD 2012 использует .NET 4.0
-
у меня есть еще EXPRESS там версия 4.0 присутствует
-
у меня есть еще EXPRESS там версия 4.0 присутствует
Из бесплатных версий Visual Studio есть еще Visual Studio Community 2013 (https://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx) и Visual Studio Community 2015 (https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx). Но с Windows XP (если мне не изменяет память) они не работают.