работа с Autocad через COM из Revit Dynamo

Автор Тема: работа с Autocad через COM из Revit Dynamo  (Прочитано 1931 раз)

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

Оффлайн Иван ЛогиновАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Приветствую!
Не могу понять, в следствии поверхностного знания работы с API Autocad и в целом .NET (в процессе изучения). Видел примеры как можно получить доступ из Dynamo к Autcad через System.Runtime.InteropServices.Marshal.GetActiveObject (при открытом Autocad). Так же видел примеры работы с элементами файла .dwg если сам файл погружен в Revit как ссылка.
Не могу понять в какую сторону смотреть, если задача в выборе файла dwg из хранилища (уже реализовано) и работы с ним через Dynamo. (т.е. нужно запустить AutoCAD имеющейся на компьютере версии, зайти в пространство модели и получить доступ к объектам (таблицам, блокам) считать нужную информацию и закрыть AutoCAD.
Благодарю..

Отмечено как Решение Иван Логинов 28-08-2020, 11:01:46

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: работа с Autocad через COM из Revit Dynamo
« Ответ #1 : 28-08-2020, 09:01:28 »
Как-то так в .NET происходит запуск AutoCAD через COM:
Код - C# [Выбрать]
  1. const string progID = "AutoCAD.Application";
  2. Type acType =  Type.GetTypeFromProgID(progID);
  3. dynamic acApp = Activator.CreateInstance(acType,  true);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Иван ЛогиновАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 0
Re: работа с Autocad через COM из Revit Dynamo
« Ответ #2 : 28-08-2020, 10:58:38 »
Александр, спасибо!

Код - Python [Выбрать]
  1. #TaskDialog
  2. openFileDialog = OpenFileDialog()
  3. openFileDialog.Title = "Выберите dwg файл";
  4. openFileDialog.Multiselect = False
  5. openFileDialog.Filter = "dwg files (*.dwg)|*.dwg"
  6. openFileDialogResult = openFileDialog.ShowDialog()
  7.        
  8. #Getting Autocad Started
  9. progID = "AutoCAD.Application"
  10. acType = System.Type.GetTypeFromProgID(progID)
  11. acadApp = System.Activator.CreateInstance(acType, True)
  12. acadApp.Visible = False
  13.  
  14. docs = acadApp.Documents
  15. doc = docs.Open(openFileDialog.FileNames[0])
  16. db = doc.Database      

И далее помогут примеры:
https://adn-cis.org/forum/index.php?topic=7923.0
https://adn-cis.org/forum/index.php?topic=7364.15

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: работа с Autocad через COM из Revit Dynamo
« Ответ #3 : 28-08-2020, 11:26:04 »
И далее помогут примеры:
https://adn-cis.org/forum/index.php?topic=7923.0
https://adn-cis.org/forum/index.php?topic=7364.15
Эти примеры не помогут, так как в них используется AutoCAD .NET API, которое можно использовать только из плагинов, загруженных внутрь AutoCAD, а не через COM из внешнего приложения, как ты собираешься делать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: работа с Autocad через COM из Revit Dynamo
« Ответ #4 : 28-08-2020, 11:28:16 »
Скорее могут помочь вот эти примеры: Python & ActiveX/COM Autocad
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение