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

ADN Club => Revit API => Тема начата: Иван Логинов от 27-08-2020, 23:36:42

Название: работа с Autocad через COM из Revit Dynamo
Отправлено: Иван Логинов от 27-08-2020, 23:36:42
Приветствую!
Не могу понять, в следствии поверхностного знания работы с API Autocad и в целом .NET (в процессе изучения). Видел примеры как можно получить доступ из Dynamo к Autcad через System.Runtime.InteropServices.Marshal.GetActiveObject (при открытом Autocad). Так же видел примеры работы с элементами файла .dwg если сам файл погружен в Revit как ссылка.
Не могу понять в какую сторону смотреть, если задача в выборе файла dwg из хранилища (уже реализовано) и работы с ним через Dynamo. (т.е. нужно запустить AutoCAD имеющейся на компьютере версии, зайти в пространство модели и получить доступ к объектам (таблицам, блокам) считать нужную информацию и закрыть AutoCAD.
Благодарю..
Название: Re: работа с Autocad через COM из Revit Dynamo
Отправлено: Александр Ривилис от 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);
Название: Re: работа с Autocad через COM из Revit Dynamo
Отправлено: Иван Логинов от 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=7923.0)
https://adn-cis.org/forum/index.php?topic=7364.15 (https://adn-cis.org/forum/index.php?topic=7364.15)
Название: Re: работа с Autocad через COM из Revit Dynamo
Отправлено: Александр Ривилис от 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 из внешнего приложения, как ты собираешься делать.
Название: Re: работа с Autocad через COM из Revit Dynamo
Отправлено: Александр Ривилис от 28-08-2020, 11:28:16
Скорее могут помочь вот эти примеры: Python & ActiveX/COM Autocad (https://adn-cis.org/forum/index.php?topic=7864.0)