проблемы с Autocad 2017

Автор Тема: проблемы с Autocad 2017  (Прочитано 4065 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
проблемы с Autocad 2017
« : 09-04-2019, 11:34:28 »
буквально вчера натыкали носом, что программа не грузится в AutoCAD 2017 под win10. проверил - действительно не грузится.
компиляция проекта настроена на 2010-2018 win32 и x64. все остальные работают. проблема именно в 2017. причем, раньше (ну месяцев 5-6 назад) оно работало. с тех пор ничего радикально не менялось. механизм загрузки такой: через "acad.rx" грузится первая arx. она проверяет регистрацию, показывает заставку на 4 секунды отдельным потоком и грузит другие arx (25 штук).

во всех версиях кроме 2017 я вижу заставку и вижу в итоге 26 загруженных arx.
в 2017 заставки нет (под дебагом всё проходит хорошо - результата нет) и вижу 2 загруженные arx. настройки во всех проектах солюшина одинаковые. dependency walker выдает что не хватает нескольких dll из папки акада, но их добавление в папку программы ничего не меняет.


если загрузить первую arx через _appload, заставка появляется.

для примера, еще один скриншот с dependency walker для arx, которая грузится и работает в 2017 и в 2018 автокадах (это я к тому, что проблема не в нехватке dll-ок)


Версия виндузов: Win10 1809
Версия акада: Autocad 2017.1.2 Update
Сборка всего этого добра происходит в VS Community2015 14.0.24720.00 Update 1
Проверить под дебагом загрузку битых arx-ин не получается, т.к. просто не входит в процедуру On_kInitAppMsg.

И что же поменялось в мире за последние пол года? :) Может не у одного меня такая ситуация.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #1 : 09-04-2019, 13:00:56 »
dependency walker выдает что не хватает нескольких dll из папки акада, но их добавление в папку программы ничего не меняет.
Ты указал dependency walker папку с acad.exe?
И что же поменялось в мире за последние пол года?
Затрудняюсь сказать, но возможно произошло обновление VC++ runtime в Win10. Если есть возможность - поэкспериментируй с VS 2015 Update 2 и/или Update 3.
через "acad.rx" грузится первая arx. она проверяет регистрацию, показывает заставку на 4 секунды отдельным потоком и грузит другие arx (25 штук).
Так может регистрацию в 2017-ом не находит? ;) И, например, не находит путь к себе, если он у тебя используется...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #2 : 09-04-2019, 15:02:46 »
Так может регистрацию в 2017-ом не находит?  И, например, не находит путь к себе, если он у тебя используется...
не, там всё просто как апельсин. картинка заставки в ресурсах arx-ины. по шагам проходит всё ок. по ошибкам нигде не выпадает.
грубо говоря выглядит это так:
Код - C++ [Выбрать]
  1. CSplashWnd::ShowSplashScreen(4000/*время в мс*/, IDB_SCREENBACK/*ID картинки из ресурсов*/, CWnd::FromHandle(adsw_acadMainWnd())/*родитель. не NULL - проверял*/);

но то на закуску, может и само наладится, если починить основную проблему

Ты указал dependency walker папку с acad.exe?
а вот указал. и долго плакал над полученным результатом



а это скриншот для 2018 версии той же arx-ины


всё по честному, функция deepCloneObjects действительно используется в файле, подключенном к проектам (вот именно к тем 25-ти, которые не хотят грузиться)

сама функция выглядит следующим образом:
Код - C++ [Выбрать]
  1. Acad::ErrorStatus copyEntity(AcDbObjectId &eId)
  2. {
  3.         Acad::ErrorStatus es = Acad::eOk;
  4.         AcDbObjectPointer<AcDbObject> ent(eId,AcDb::kForRead);
  5.         if ((es = ent.openStatus()) != Acad::eOk) return es;
  6.         AcDbDatabase *db = eId.database();
  7.         AcDbObjectIdArray arId; arId.append(eId);
  8.         AcDbIdMapping mapId;
  9.         if ((es = db->deepCloneObjects(arId,db->currentSpaceId(),mapId)) != Acad::eOk) return es;
  10.  
  11.         AcDbIdPair idPair(eId,AcDbObjectId::kNull,true);
  12.         if (mapId.compute(idPair))
  13.         {
  14.                 eId = idPair.value();
  15.                 return Acad::eOk;
  16.         }
  17.         return Acad::eCopyFailed;
  18. }
  19.  

отключаю - всё начинает грузиться... плАчу... :o

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #3 : 09-04-2019, 15:09:48 »
всё по честному, функция deepCloneObjects действительно используется в файле, подключенном к проектам (вот именно к тем 25-ти, которые не хотят грузиться)
О каком файле идёт речь?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #4 : 09-04-2019, 15:15:42 »
О каком файле идёт речь?
просто h и cpp-файл в котором собраны полезные функции. ну и т.к. полезных функций много, и используются они так или иначе по всей программе, то этот cpp и h-файл подключены практически ко всем проектам (естественно, просто так не подключали. если подключены, значит используются функции, написанные в них). если внутренности функции комментирую, компилю проект - он загружается в 2017 автокад.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #5 : 09-04-2019, 15:18:55 »
deepCloneObjects
Такое чувство, что у тебя используется описание deepCloneObjects не из той версии ObjectARX SDK.
Правда это не объясняет почему через _APPLOAD грузится, а через acad.rx нет....
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #6 : 09-04-2019, 15:34:03 »
Правда это не объясняет почему через _APPLOAD грузится, а через acad.rx нет....
не-не-не. не мешайте мух с котлетами в одну кучу. первая arx-ина грузится и через acad.rx и через _appload. в проект этой arx-ины НЕ ПОДКЛЮЧЕН cpp/h с функцией copyEntity (внутри которой используется deepCloneObjects). у первой arx-ины просто не появляется заставка, хотя под дебагом проходит всё замечательно и она ДОЛЖНА появиться а потом по таймеру исчезнуть через 4 секунды, но визуально я её не наблюдаю. это если грузить через acad.rx. а если запустить appload, выгрузить её, а потом загрузить - картинка появляется.

Такое чувство, что у тебя используется описание deepCloneObjects не из той версии ObjectARX SDK.
эт как, есть возможность вот конкретно отдельной функции сказать, чтоб она бралась не с папок inc-lib конкретного ObjectARX2017 а из какого-то другого места :)? она же объявлена в dbmain.h для каждого конкретного ObjectARX. В том же dbmain.h объявлены почти все функции ObjectARX (и таки да :), мноие из них используются в том же cpp/h файле). А ругается именно на эту.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #7 : 09-04-2019, 15:40:00 »
не-не-не. не мешайте мух с котлетами в одну кучу. первая arx-ина грузится и через acad.rx и через _appload.
Ну видимо ты так смешал всё вместе, что я не понял. Фактически в AutoCAD 2017 у тебя не грузятся arx-файлы, в которых используется метод deepCloneObjects? Причем не грузится и через _APPLOAD тоже? Я всё правильно понял? Тогда для теста создай новый проект в который  включи это метод и проверь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #8 : 09-04-2019, 16:07:01 »
Фактически в AutoCAD 2017 у тебя не грузятся arx-файлы, в которых используется метод deepCloneObjects? Причем не грузится и через _APPLOAD тоже? Я всё правильно понял?
да, всё так и есть

Тогда для теста создай новый проект в который  включи это метод и проверь.
та легко )))


для наглядности используются две функции из одного и того же acdbXX.dll

props файл для 2018 - не пугайтесь ))), внутренности под 2017. если выставить внутренности под 2018, получим рабочую arx-ину с командой, которая создает копию выбранного объекта.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #9 : 09-04-2019, 16:08:43 »
Сделал тестовый проект (AutoCAD 2017.1.2 x64)

Всё нормально грузится.


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Николай Горлов 09-04-2019, 16:41:50

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #10 : 09-04-2019, 16:15:56 »
та легко )))
И с твоим у меня всё нормально грузится и работает.
Остаётся предположить, что у тебя левый ObjectARX SDK 2017. Случайно не из беты или Release Candidate?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #11 : 09-04-2019, 16:21:43 »
И с твоим у меня всё нормально грузится и работает.
м-да...

Случайно не из беты или Release Candidate?
:):):) та кто ж сейчас вспомнит то. сейчас перекачаю ObjectARX. вдруг поможет. но в любом случае, у нас есть клиенты на 2017 автокаде. собирали на этом же ObjectARX и всё было ок. пошел качать свежачок :)



Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #12 : 09-04-2019, 16:25:55 »
Николай Горлов,
Мой arx-файл у тебя нормально в AutoCAD загрузился?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9834
  • Карма: 1256
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: проблемы с Autocad 2017
« Ответ #13 : 09-04-2019, 16:30:56 »
Цитата: Александр Ривилис от 09-04-2019, 16:15:56

    Случайно не из беты или Release Candidate?

:):):) та кто ж сейчас вспомнит то.
Я не зря спросил. У меня был такой казус, когда я в одной из версий использовал ObjectARX SDK из Release Candidate для своих бесплатных утилит. А в релизе AutoCAD они вдруг не стали грузится. Я не сразу понял в чем прикол. Тем более, что релизный ObjectARX SDK выложили с задержкой в несколько дней.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Николай ГорловАвтор темы

  • ADN
  • *
  • Сообщений: 228
  • Карма: 32
Re: проблемы с Autocad 2017
« Ответ #14 : 09-04-2019, 16:41:35 »
Мой arx-файл у тебя нормально в AutoCAD загрузился?
да, загрузился.

У меня был такой казус, когда я в одной из версий использовал ObjectARX SDK из Release Candidate для своих бесплатных утилит.
:) похоже, что теперь нас таких двое. скачал свеженький ObjectARX2017, собрал тестовый проект. а он взял и загрузился в автокад :):):)
теперь поставил на компиляцию основные аrx-ины. в уже собранных deepCloneObjects светится зелененьким. похоже, что проблема решена.
пасибочки за помощь!!!