Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: Валериян от 24-03-2016, 21:19:36

Название: ObjectARX
Отправлено: Валериян от 24-03-2016, 21:19:36
Вопрос рыцарям ObjectARX.

Проблема с началом работы с ARX.

Скачал ObjectARX 2015.
Вызываю Visual Studio 12.
Беру тестовый пример coordsys.
Построение.


1>------ Построение начато: проект: coordsys, Конфигурация: Debug Win32 ------
1>  coordsys.cpp
1>     Создается библиотека Debug\coordsys.lib и объект Debug\coordsys.exp
1>rxapi.lib(libinit.obj) : warning LNK4099: "rxapi_cl.pdb" PDB не найден с "rxapi.lib(libinit.obj)" или на "C:\ObjectARX 2015\samples\graphics\coordsys_dg\Debug\rxapi_cl.pdb"; компоновка объекта выполняется как при отсутствии отладочных данных
1>  coordsys.vcxproj -> C:\ObjectARX 2015\samples\graphics\coordsys_dg\Debug\coordsys.arx
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

подозрительно  "rxapi_cl.pdb" PDB не найден".


Вызываю AutoCAD 2015.
Command: _appload
coordsys.arx is incompatible with this version of AutoCAD.
AcRxDynamicLinker failed to load 'c:\objectarx 2015\samples\graphics\coordsys_dg\debug\coordsys.arx'
C:\Program Files\Autodesk\AutoCAD 2015\acad.exeUnable to load coordsys.arx file.

Почему   " is incompatible with this version of AutoCAD" ?

Пробую
Command: ARX
Enter an option [Files/Groups/Commands/CLasses/Services/Load/Unload]: L
coordsys.arx is incompatible with this version of AutoCAD.
AcRxDynamicLinker failed to load 'c:\objectarx 2015\samples\graphics\coordsys_dg\debug\coordsys.arx'
C:\Program Files\Autodesk\AutoCAD 2015\acad.exe

Почему "coordsys.arx is incompatible with this version of AutoCAD"?
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 24-03-2016, 21:27:56
подозрительно  "rxapi_cl.pdb" PDB не найден".
Это нормально.
Почему   " is incompatible with this version of AutoCAD" ?
1) AutoCAD 2015 x86?
2) Проверяешь на том же PC, на котором компилировал? Если нет, то только конфигурация Release.
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 24-03-2016, 21:31:08
3) Установлен Update 4 для Visual Studio 2012?
Название: Re: ObjextARX
Отправлено: Валериян от 25-03-2016, 05:44:10
Пробовал Release.
И c AutoCAD 2012.
Результат тот же.

У меня задача простая.
Мне нужно адаптировать стандартную DLL программу на С++ / С в
AutoCAD ARX API
или
AutoCAD NET API.
С ARX пока тупик.

Не могу найти образцы AutoCAD NET API на С++.
В справках только C# и VB.
Дайте, пожалуйста, ссылку на простейшие работающие образцы AutoCAD NET API на С++.
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 09:19:31
Пробовал Release.
И c AutoCAD 2012.
Результат тот же.
Специально не отвечаешь на мои вопросы? Для AutoCAD 2012 нужен ObjectARX SDK 2012 и Visual Studio 2010. (моя ошибка) Visual Studio 2008 SP1.
Название: Re: ObjextARX
Отправлено: Валериян от 25-03-2016, 20:28:18
Да все делал так.

Вызываю VC 10. OC Windows 7 64.
Из  ObjectARX 2012 беру проект hilight_dg. Конфигурация Release.
1>------ Перестроение всех файлов начато: проект: hilight, Конфигурация: Release Win32 ------
1>  hilight.cpp
1>     Создается библиотека Release\hilight.lib и объект Release\hilight.exp
1>  Создание кода
1>  Создание кода завершено
1>rxapi.lib(libinit.obj) : warning LNK4099: "rxapi_cl.pdb" PDB не найден с "rxapi.lib(libinit.obj)" или на "C:\ObjectARX 2012\samples\entity\hilight_dg\Release\rxapi_cl.pdb"; компоновка объекта выполняется как при отсутствии отладочных данных
1>rxapi.lib(nullobid.obj) : warning LNK4099: "rxapi_cl.pdb" PDB не найден с "rxapi.lib(nullobid.obj)" или на "C:\ObjectARX 2012\samples\entity\hilight_dg\Release\rxapi_cl.pdb"; компоновка объекта выполняется как при отсутствии отладочных данных
1>rxapi.lib(nullSubent.obj) : warning LNK4099: "rxapi_cl.pdb" PDB не найден с "rxapi.lib(nullSubent.obj)" или на "C:\ObjectARX 2012\samples\entity\hilight_dg\Release\rxapi_cl.pdb"; компоновка объекта выполняется как при отсутствии отладочных данных
1>  hilight.vcxproj -> C:\ObjectARX 2012\samples\entity\hilight_dg\Release\hilight.arx
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========
Вызываю AutoCAD 2012 (из Program Files).
Выполняю команду ARX.

Команда: ARX

Задайте параметр [Файлы/Группы/Команды/кЛассы/Службы/Загрузить/Выгрузить]: з

hilight.arx несовместим с этой версией AutoCAD.
Сбой AcRxDynamicLinker при загрузке 'c:\objectarx
2012\samples\entity\hilight_dg\release\hilight.arx'
C:\Program Files\Autodesk\AutoCAD 2012 - Russian\acad.exe

Может надо собирать в режиме 64, а не win 32?
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 20:37:04
Здесь две ошибки:
1) Для AutoCAD 2012 нужен VS 2008 SP1. Возможна работа и с VS 2010, но VS 2008 SP1 должен быть установлен. Из справки:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F124786%2F7842324.5%2F0_11e46c_6b7869e1_orig.png&hash=5c7ddfa3f5208dc7fa406714300a2bf4)

2) Так как Windows 7 64, то и AutoCAD x64. И компилировать следует в x64, а не в Win32
Название: Re: ObjextARX
Отправлено: Валериян от 25-03-2016, 21:02:16
Спасибо! Это решение.
Прошло VC 2012 + AutoCAD 2015. x64. Release.
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 21:07:00
Вот готовый минимальный пример с использованием ObjectARX 2015 и VS 2012 Update 4. Там уже даже готовый Test2015.arx в каталоге x64\Release\
Чтобы ты сам мог построить этот проект нужно в файле Autodesk.arx-2015.props в строке:
Код - XML [Выбрать]
  1. <ArxSdkDir>E:\ObjectARX2015\</ArxSdkDir>
заменить E:\ObjectARX2015\ на путь к твоему ObjectARX SDK 2015
Т.к. у тебя AutoCAD x64 то компилировать для проверки ты должен в конфигурации x64: для отладки - Debug, для передачи на сторону - Release.
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 21:10:48
Правильное решение было еще здесь: http://adn-cis.org/forum/index.php?topic=6980.msg19217#msg19217
Но оно было или непонято или проигнорировано.
Название: Re: ObjextARX
Отправлено: Валериян от 25-03-2016, 21:16:12
Спасибо. Тот вариант смотрел.
Но с тем же результатом.
Сейчас другое дело. Посмотрю оба варианта.

А образца NET у Вас нет за пазухой? :)
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 21:18:57
Сейчас другое дело. Посмотрю оба варианта.
Не понял. Какие оба варианта?
Название: Re: ObjextARX
Отправлено: Валериян от 25-03-2016, 21:23:44
Вчерашний образец по теме NET. И сегодняшний.
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 25-03-2016, 21:57:25
Валериян
Не рекомендую пользоваться mixed C++ (.NET) в тех случаях, когда без него можно обойтись. Если уж есть желание писать с использованием .NET, то - C#.
Название: Re: ObjextARX
Отправлено: Андрей Бушман от 27-03-2016, 20:08:05
Не рекомендую пользоваться mixed C++ (.NET) в тех случаях, когда без него можно обойтись.
Почему не рекомендуете?
Название: Re: ObjextARX
Отправлено: Александр Ривилис от 28-03-2016, 00:06:00
Почему не рекомендуете?
1. MC++ и C++ - это вообще-то разные языки. И по моему впечатлению C# ближе к C++, чем MC++ к C++.
2. Приложение (в отличии от чистого .NET) становится зависящим еще и от разрядности AutoCAD.
3. mixed-приложение следует загружать через _NETLOAD, а не через _ARX (или _APPLOAD).
4. mixed-приложение становится невыгружаемым, как и любое .NET-приложение.
5. Практически нет примеров создания mixed-приложений.
Так что если нет прямой необходимости в mixed (например, .NET wrapper для Custom object/Entity), то лучше туда и не лезть.

Всё вышесказанное - моё личное мнение.
Название: Re: ObjextARX
Отправлено: Андрей Бушман от 28-03-2016, 11:09:44
Понял, спасибо.
Название: Re: ObjectARX
Отправлено: Debalance от 27-04-2016, 15:47:47
Вопрос рыцарям ObjectARX.
Поправьте, если я ошибаюсь, но среди нас пока только один оффициально назначенный Рыцарь - Александр Ривилис. Все остальные (если таковые и имеются - суть самозванцы) пока не прошли "ритуал помазания"...  :)
Название: Re: ObjectARX
Отправлено: Валериян от 27-04-2016, 17:35:40
Понял.
Приношу глубокие извинения Рыцарю ARX.
Название: Re: ObjectARX
Отправлено: Александр Ривилис от 27-04-2016, 17:57:58
Хорош оффтопить!