Из Python через COM API или .NET API?

Автор Тема: Из Python через COM API или .NET API?  (Прочитано 6205 раз)

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

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

  • ADN
  • *
  • Сообщений: 8
  • Карма: 0
Добрый день.
Использую IronPython для доступа к функциям AutoCAD через COM API из других приложений, например Dinamo Studio или из макроса Revit. 
Пример кода ниже. В целом все программы работают, эффект автоматизации есть.

Вопрос: правильно ли я делаю, что использую COM API? Слышал, что COM API - не развивается и со временем закроется.
Есть ли возможность использовать .NET API для внешнего взаимодействия с AutoCAD?
Или я вообще вопрос неправильно формулирую, может есть какая-то общая информация по этой теме.

Код - Python [Выбрать]
  1. import System
  2. AcadApp = System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application")
  3. AcadApp.ActiveDocument.Import(FileName, InsertionPoint, ScaleFactor)
« Последнее редактирование: 26-09-2017, 16:20:28 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Из Python через COM API или .NET API?
« Ответ #1 : 26-09-2017, 16:24:36 »
Есть ли возможность использовать .NET API для внешнего взаимодействия с AutoCAD?
Нет. AutoCAD .NET API можно использовать только изнутри AutoCAD (т.е. создать .NET dll-файл и загрузить его внутрь процесса AutoCAD командой _NETLOAD или аналогичным образом).
Есть еще RealDWG (но это отдельное и недешевое API), которое позволяет работать с dwg-файлами вне AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 8
  • Карма: 0
Re: Из Python через COM API или .NET API?
« Ответ #2 : 26-09-2017, 16:29:01 »
AutoCAD .NET API можно использовать только изнутри AutoCAD
Спасибо. То есть для внешнего взаимодействия с процессом AutoCAD  - только COM API, правильно?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Из Python через COM API или .NET API?
« Ответ #3 : 26-09-2017, 16:31:02 »
То есть для внешнего взаимодействия с процессом AutoCAD  - только COM API, правильно?
Да. Именно так.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 8
  • Карма: 0
Re: Из Python через COM API или .NET API?
« Ответ #4 : 27-09-2017, 07:29:36 »
Да. Именно так.
Нашел в справке статью Out-of-Process versus In-Process, в которой есть способ работы извне, но с .NET. Для этого рекомендуется создать .NET приложение, затем через COM запустить AutoCAD и свое приложение в нем, затем обращаться к  приложению через отправку команд (тоже через COM).
Честно говоря, это кажется странным - манипулировать приложением через команды. Кто-нибудь пишет внешние (Out-of-Process) приложения таким образом?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Из Python через COM API или .NET API?
« Ответ #5 : 27-09-2017, 08:59:35 »
Честно говоря, это кажется странным - манипулировать приложением через команды. Кто-нибудь пишет внешние (Out-of-Process) приложения таким образом?
Если в самом AutoCAD COM/ActiveX API нет нужных методов, которые есть в AutoCAD .NET API, то этот способ имеет право на жизнь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Из Python через COM API или .NET API?
« Ответ #6 : 27-09-2017, 11:52:24 »
Плюс ещё, с большой вероятностью, такое "комбинированное" приложение будет работать быстрее, чем "чистый COM".