Тема: Загрузка приложения ARX в AutodeskLandDesktop

При загрузке приложения ARX в AutodeskLandDesktop из командной строки appload"С:\\***\\***\\***.arx" происходит ошибка. Не могу понять в чем ошибка. Все работает если вначале appload, а затем выбор файла. Но очень хочется выполнить эту опрерацию за одно действие.

Re: Загрузка приложения ARX в AutodeskLandDesktop

1) Какая ошибка?
2) Почему не воспользоваться:

(arxload "С:\\***\\***\\***.arx")

Re: Загрузка приложения ARX в AutodeskLandDesktop

Александр, спасибо за ответ, но:
arxload"C:\\Pipeline\\bin\\UnisLandProfiler.arx"
Unknown command "ARXLOAD"C:\\PIPELINE\\BIN\\UNISLANDPROFILER.ARX"".  Press F1
for help.

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Andrey_N
А скобочки Вы не заметили? Это лисповское выражение.

Re: Загрузка приложения ARX в AutodeskLandDesktop

(arxload "C:\\Pipeline\\bin\\UnisLandProfiler.arx")

Re: Загрузка приложения ARX в AutodeskLandDesktop

Александр, я не слишком "продвинутый" пользователь, но все равно не выходит
Command: (arxload "C:\\Pipeline\\bin\\UnisLandProfiler.arx")
C:\Pipeline\bin\UnisLandProfiler.arx cannot find a dll or other file that it
needs.
; error: ARXLOAD failed

Re: Загрузка приложения ARX в AutodeskLandDesktop

А если очень хочется через команду, то:

_ARX _Load "C:/Pipeline/bin/UnisLandProfiler.arx"

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Andrey_N
Если перевести, то что сообщает AutoCAD, то он Вам намекает, что не может найти какой-то DLL-файл, который требуется для Вашего arx-файла. Посмотрите таблицу импорта arx-файла. В какой-то степени этот вопрос обсуждался здесь: https://www.caduser.ru/forum/topic20839.html

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Александр Ривилис
Спасибо, сейчас посмотрю.

Re: Загрузка приложения ARX в AutodeskLandDesktop

Пришли ARX, посмотрю.
branets@gmail.com

Re: Загрузка приложения ARX в AutodeskLandDesktop

Спасибо всем за помощь.

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Andrey_N
Пожалуйста. smile Только все-таки поделитесь информацией - что же там было не так?

Re: Загрузка приложения ARX в AutodeskLandDesktop

Приношу извинения за поздний ответ. К сожалению мне не удалось осуществить эту опрерацию. Причем пытался проделать такую загрузку не только с этим файлом, но и с другими. Результат отрицательный. Скорее всего я что-то делаю не так. Поэтому решил поучить матчасть. :).

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Andrey_N
Сообщение "ARXLOAD failed" может еще выдаваться, когда версии приложения и автокада не совпадают. Например когда ARX-файл для автокада 2000 пытаешься загрузить в 2005-й.

Re: Загрузка приложения ARX в AutodeskLandDesktop

> Леонид
Это IMHO не тот случай:

C:\Pipeline\bin\UnisLandProfiler.arx cannot find a dll or other file that it
needs.

AutoCAD уже определил, что версия ObjectARX совместима с ним. А вот если arx-приложение создано в несовместимой версии MS VS C++ - это вполне возможно. Особенно если оно создано в более новой версии, а на компьютере не установлены dll-файлы поддерживающие его.
А может быть еще проще - этот arx-файл статически линкован с dbx-файлом "собственного" примитива, который не находится в пути доступа AutoCAD. Если дело именно в этом, и известно, где этот файл находится, то можно использовать ключ /DELAYLOAD:"имя файла.dbx" delayimp.lib и загружать его динамически из arx-файла, используя acrxLoadModule. Например, если он всегда в том же каталоге, что и arx-файл, то:

    char ModuleName[_MAX_PATH+1];
    GetModuleFileName(_hdllInstance,ModuleName,_MAX_PATH);
    char PathDBX[2*_MAX_PATH+1]; memset(PathDBX,'\0',2*_MAX_PATH+1);
    char *send = 0;
    if ((send = strrchr(ModuleName,'\\')) != NULL) {
      strncpy(PathDBX,ModuleName,send-ModuleName+1);
      strcat(PathDBX,"имя файла.dbx");
    } else if ((send = strrchr(ModuleName,'/')) != NULL) {
      strncpy(PathDBX,ModuleName,send-ModuleName+1);
      strcat(PathDBX,"имя файла.dbx");
    } else {
      strcpy(PathDBX,"имя файла.dbx");
    }

Аналогично можно делать и для собственных dll-файлов, путь к которым AutoCAD не в состоянии найти сам.

Re: Загрузка приложения ARX в AutodeskLandDesktop

Забыл дописать в конце кода:

if (!acrxLoadModule(PathDBX, true)) {
  acedAlert("Не смогли загрузить dbx-файл!");
  return AcRx::kRetError;
}