AcadApplication: передача параметров, аналогичных аргументам acad.exe

Автор Тема: AcadApplication: передача параметров, аналогичных аргументам acad.exe  (Прочитано 5346 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Доброго времени суток.

Если процесс acad.exe создавать программно, то ему через аргументы можно передать набор дополнительных ключей: нужный профиль AutoCAD, нужный шаблон для нового документа и т.д. и т.п.

Можно ли это как-то сделать в случае использования COM? Т.е. что-то похожее на это:
Код - C# [Выбрать]
  1. String[] appArgs = new String[] { @"\p", @"C:\GPSM\AdminCAD\Common\Profiles\GPSM 4.2.1.arg",
  2. @"\t", @"C:\GPSM\AdminCAD\Common\Templates\DWT\Формы по ГОСТ 21.1101-2009.dwt"};
  3. app = System.Activator.CreateInstance(type, appArgs); // AcadApplication
Я понимаю, что можно сначала программно создать Process, передав ему нужный набор аргументов и затем подключиться к нему через COM. Однако можно ли это сделать напрямую при создании объекта AcadApplication средствами COM?

Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Однако можно ли это сделать напрямую при создании объекта AcadApplication средствами COM?
Увы, но таких средств нет. Максимум из того, что ты можешь сделать при помощи только средств COM - это после создания, пользуясь методами объекта поменять профиль и т.д. Кстати, я считаю что запуск при помощи Process более правильный - ты таким образом точно знаешь какая версия AutoCAD будет запущена.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
ты таким образом точно знаешь какая версия AutoCAD будет запущена.
Сам проверить не могу, поэтому уточняю: а если создавать объект приложения не при помощи строкового представления ProgID:
Код - C# [Выбрать]
  1. System.Type.GetTypeFromProgID(strId);
а через CLSID:
Код - C# [Выбрать]
  1. type = System.Type.GetTypeFromCLSID(guid);
В этом случае всё равно не факт что запустится именно та, которая нужна?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
В этом случае всё равно не факт что запустится именно та, которая нужна?
Абсолютно не факт.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Тогда возникает риторический вопрос: нахрена тогда эти  CLSID нужны, при таком раскладе?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Тогда возникает риторический вопрос
Ну раз риторический, то отвечать нет смысла. :-) Видимо считается, что у пользователя установлена только одна версия AutoCAD, что для пользователя (а не программиста) правильно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Видимо считается, что у пользователя установлена только одна версия AutoCAD, что для пользователя (а не программиста) правильно.
Т.е. это не проблема COM в целом, а лишь кривая реализация от Autodesk?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Т.е. это не проблема COM в целом, а лишь кривая реализация от Autodesk?
Ты уже в теме смешал два вопроса. Если говорить о передаче параметров в COM - то это особенность COM. Кстати COM реализуется обычно через DLL, который в принципе слыхом не слыхивал ни про какие параметры командной строки.
Если говорить про неопределенность вызова через COM AutoCAD - тут я могу с тобой согласится процентов на 90.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение