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

ADN Club => AutoCAD .NET API => Тема начата: Ksarrik от 06-05-2022, 09:54:29

Название: Выполнение кода при запуске Autocad
Отправлено: Ksarrik от 06-05-2022, 09:54:29
Добрый день. Возможно ли запускать выполнение кода автоматически при запуске Autocad?? Просто есть необходимость в открытии и обработке файлов dwg в не рабочее время, без участия пользователя, например через планировщик заданий запускается autocad в не рабочее время и автоматически плагином запускается обработка файлов dwg.
Например чтобы открыть документ код:
Код - C# [Выбрать]
  1. [CommandMethod("OpenTest")]
  2.         public void OpenTest()
  3.         {
  4.             try
  5.             {
  6.                 DocumentCollection docMgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
  7.                 Document ndoc = docMgr.Open(@"C:\Users\ivanov\Work\\Проект для выгрузки.dwg", false);
  8.                 if (ndoc != null)
  9.                 {
  10.                     docMgr.MdiActiveDocument = ndoc;
  11. //обработка документа
  12.                 }
  13.             }
  14.             catch (System.Exception ex)
  15.             {
  16.                 Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.ToString());
  17.             }
  18.         }
  19.  

Нормально работает если приложение уже запущено, но я не знаю как запустить его выполнение автоматически при запуске Autocad.
Если я использую этот код в методе Initialize() приложения, то ничего не происходит.

Либо как другой вариант запуск выполнения кода по таймеру.
Возможно ли такое реализовать?
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Александр Ривилис от 06-05-2022, 09:57:35
Ksarrik,
Намного логичнее выглядит (с учетом того, что взаимодействие с пользователем не требуется) вместо AutoCAD использование AcCoreConsole.exe который бы запускался Планировщиком заданий Windows (ну или своим exe-приложением)
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Ksarrik от 06-05-2022, 10:03:49
У меня приложение написано уже для Civil3D и  при запуске по кнопке все успешно работает, теперь думаю как это реализовать автоматически, поскольку получил такое задание.
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Александр Ривилис от 06-05-2022, 10:10:01
У меня приложение написано уже для Civil3D и  при запуске по кнопке все успешно работает, теперь думаю как это реализовать автоматически, поскольку получил такое задание.
Как ты загружаешь свое приложение в Civil3D? Если используешь Autoloader (PackageContents.xml), то достаточно указать StartupCommand и команда запустится после загрузки твоего приложения.
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Ksarrik от 06-05-2022, 10:18:19
Я использую Autoloader, а StartupCommand указывается в PackageContents.xml??
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Александр Ривилис от 06-05-2022, 10:20:15
Я использую Autoloader, а StartupCommand указывается в PackageContents.xml??
Да. https://adndevblog.typepad.com/autocad/2012/04/autoloader-the-startupcommand-parameter.html
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Ksarrik от 06-05-2022, 10:59:23
В дополнение к данному вопросу (чтобы не создавать новую тему). А как запустить Civil3D через Process.Start() и открыть конкретный файл? Просто я смотрю ярлык Civil3D он указывает как я понимаю на Acad.exe. Если на одном пк установлен и Autocad 2022 и Civil3d 2022, оба запускаются с одного файла acad.exe. То как передать аргумент, что нужно запускать именно Civil3D а не Autocad?
Причем почему то при запуске:
Код - C# [Выбрать]
  1. Process.Start(@"C:\Program Files\Autodesk\AutoCAD 2022\Acad.exe", @"C:\Users\strelnikovdv\Work\Скачка\Проект для выгрузки nwc.dwg");
  2.  
Он почему то выдает что файл не существует, хотя он существует.
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Александр Ривилис от 06-05-2022, 11:10:23
Просто я смотрю ярлык Civil3D он указывает как я понимаю на Acad.exe. Если на одном пк установлен и Autocad 2022 и Civil3d 2022, оба запускаются с одного файла acad.exe. То как передать аргумент, что нужно запускать именно Civil3D а не Autocad?
Смотри ключ  /product в ярлыке и передавай правильный: https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/sfdcarticles/sfdcarticles/RUS/Startup-switches-for-AutoCAD.html
Он почему то выдает что файл не существует, хотя он существует.
Подозреваю что не хватает двойных кавычек в начале и конце имени файла.
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Ksarrik от 06-05-2022, 11:33:28
Спасибо. Как я понял должно быть что-то вроде этого:
Код - C# [Выбрать]
  1. Process.Start(@"C:\Program Files\Autodesk\AutoCAD 2022\Acad.exe", @"""C:\Users\strelnikovdv\Workкачка\Template.dwg"" /product C3D");
  2.  
Название: Re: Выполнение кода при запуске Autocad
Отправлено: Александр Ривилис от 06-05-2022, 11:35:21
Спасибо. Как я понял должно быть что-то вроде этого:
Код - C# [Выбрать]
  1. Process.Start(@"C:\Program Files\Autodesk\AutoCAD 2022\Acad.exe", @"""C:\Users\strelnikovdv\Workкачка\Template.dwg"" /product C3D");
  2.  
Скорее так:
Код - C# [Выбрать]
  1. Process.Start(@"C:\Program Files\Autodesk\AutoCAD 2022\Acad.exe", "/product C3D " + @"""C:\Users\strelnikovdv\Workкачка\Template.dwg"");
  2.