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

ADN Club => AutoCAD .NET API => Тема начата: Борис_С от 19-02-2021, 16:31:44

Название: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 16:31:44
Всем доброго дня!
У меня такой вопрос. Можно ли работать с ObjectArx, не запуская Автокад?
Спасибо.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 19-02-2021, 16:41:47
Именно с ObjectARX так работать нельзя. Если нужно работать без AutoCAD то можно купить подписку на RealDWG: https://www.autodesk.com/developer-network/platform-technologies/realdwg
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 17:33:17
Спасибо.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 19-02-2021, 17:40:04
Есть еще бесплатная альтернатива при наличии установленного AutoCAD - вместо AutoCAD использовать AcCoreConsole (в составе AutoCAD).
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 17:42:30
А как можно запустить приложение Автокад, не показывая его?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 19-02-2021, 17:49:49
Борис_С,
Приложение или сам AutoCAD?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 17:52:56
AutoCad
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 19-02-2021, 17:58:47
AutoCad
Не уверен, что получится запустить его вообще невидимым. Через COM/ActiveX можно установить свойство Application.Visible в false, но всё-равно кое-что остаётся видимым.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 18:16:46
А если запускать AcCoreConsole.exe. Его можно запустить невидимым?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 19-02-2021, 18:24:04
В принципе можно. Но оно рассчитано на пакетную обработку (т.е. без всяких диалогов). Фактически ты не сможешь использовать AcMgd.dll - доступны только AcCoreMgd.dll и AcDbMgd.dll.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 19-02-2021, 18:25:39
Это то, что мне нужно. Диалоги в этом режиме мне не нужны.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 18:07:08
Какие еще dll, кроме AcCoreMgd.dll и AcDbMgd.dll, нужно подключить?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 24-02-2021, 18:09:41
Какие еще dll, кроме AcCoreMgd.dll и AcDbMgd.dll, нужно подключить?
А какие нужны?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 18:16:36
Нужно загрузить чертеж.
Код - C# [Выбрать]
  1.            DocumentCollection acDocMgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
  2.             if (File.Exists(strFileName))
  3.             {
  4.                 acDocMgr.Open(strFileName, false);
  5.             }
  6.  
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 24-02-2021, 18:19:50
Борис_С,
Не пойдёт. Так работать не будет. Ты должен передать accoreconsole имя dwg-файла. С другими dwg-файлами ты можешь работать только через Database.ReadDwgFile(...).
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 18:33:32
А как получить Database?
Я правильно понимаю, что выгружать текущий документ не нужно?
Достаточно выполнить оператор Database.ReadDwgFile(...)?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 19:03:14
И еще один вопрос. Как закрыть accoreconsole?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: pavka_97 от 24-02-2021, 20:37:13
Как закрыть accoreconsole?
Можно попробовать в скрипте написать _quit. Или с потоком поиграться (Thread.Start()).

Database.ReadDwgFile(...)?
А имеет ли смысл использовать в консоли  Database.ReadDwgFile? Я сильно не эксперементировал, но что напрямую работать с файлом в консоли, что загружать его в базу одинаково по времени получалось (может у меня файлы легкие попадались).
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 24-02-2021, 20:58:43
Можно попробовать в скрипте написать _quit.
Да. Это один из вариантов.
А имеет ли смысл использовать в консоли  Database.ReadDwgFile?
Это если нужно работать одновременно не с одним файлом.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 21:19:50
Почему оператор Autodesk.AutoCAD.ApplicationServices.Core.Application.Quit(); не закрывает accoreconsole?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 24-02-2021, 21:21:59
Борис_С,
Наверное потому, что это не оператор, а метод. :-)
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 24-02-2021, 21:23:21
Хорошо. Почему метод Autodesk.AutoCAD.ApplicationServices.Core.Application.Quit(); не закрывает accoreconsole?
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 24-02-2021, 21:55:55
Хорошо. Почему метод Autodesk.AutoCAD.ApplicationServices.Core.Application.Quit(); не закрывает accoreconsole?
Ну наверное ты запускаешь его не из того контекста. Впрочем, не исключаю, что он и не должен работать в консоли.
Поэтому завершай его из scr-файла командой _QUIT.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 25-02-2021, 18:52:08
Поискал на форуме и нашел вариант:
Код - C# [Выбрать]
  1. foreach (var process in System.Diagnostics.Process.GetProcessesByName("accoreconsole"))
  2. process.Kill();
  3.  
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 25-02-2021, 18:53:41
Жесткий вариант. :-)
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 25-02-2021, 18:55:46
Но работает.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 25-02-2021, 18:58:20
Но работает.
Важно чтобы в этот момент всё было сохранено. Ну и плюс этот код убивает все процессы "accoreconsole". А нужно только текущий:
Process.GetCurrentProcess
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Борис_С от 25-02-2021, 19:00:21
У меня другая задача. Мне нужно только вытащить информацию из чертежа. Модифицировать мне ничего не нужно.
Название: Re: Можно ли работать с ObjectArx, не запуская Автокад
Отправлено: Александр Ривилис от 25-02-2021, 19:03:09
У меня другая задача. Мне нужно только вытащить информацию из чертежа. Модифицировать мне ничего не нужно.
Если тебе нужно обработать сразу несколько чертежей, то можно запустить сразу несколько accoreconsole, которые будут выполнять свою работу параллельно. Так вот в этом случае твой код убъёт сразу все процессы accoreconsole.