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

25/02/2015

Как добавить связь с файлом Revit

В Revit можно создать связь с другим файлом Revit в помощью команды Вставка > Связать с Revit.

 

А как можно сделать то же самое, но используя API?

Сначала я подумал, что может быть есть методы типа Link или Load для класса Document. К сожалению, они есть, но только с помощью них можно связать лишь с DWG, DGN и т.д. Но никак ни с файлом Revit.

А метода Document.Create.NewRevitLinkInstance не существует.

Однако, я покопался еще и нашел метод RevitLinkInstance.Create. Но тут другая проблема. В качестве аргумента нужно передать ElementId, который является идентификатором для экземпляра класса RevitLinkType. А как его создать?

Тут мне в голову пришло, что может быть можно использовать для этого метод LoadFamilySymbol, но в документации сказано, что его можно лишь использовать для загрузки файлов семейств rfa.

Поискав получше, я нашел метод RevitLinkType.Create. Хорошо. Но в метод необходимо передать ModelPath в качестве одного из аргументов. Но ModelPath никак не создать. Ни с помощью конструктора, ни с помощью Application.Create или Document.Create. Так все же как его создать?

К счастью, я наткнулся на класс ModelPathUtils, в котором есть метод ModelPathUtils.ConvertUserVisiblePathToModelPath. Вот и все!

Вот код, который получился в итоге:

Код - C#: [Выделить]
  1. ModelPath mp = ModelPathUtils.ConvertUserVisiblePathToModelPath(
  2.     @"D:\Wall.rvt");
  3. RevitLinkOptions rlo = new RevitLinkOptions(false);
  4. var linkType = RevitLinkType.Create(RevitDoc, mp, rlo);
  5. var instance = RevitLinkInstance.Create(RevitDoc, linkType.ElementId);

Источник: http://adndevblog.typepad.com/aec/2015/02/revitapi-how-to-insert-revit-link-file.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=1895

Опубликовано 25.02.2015