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

ADN Club => Revit API => Тема начата: shss от 03-07-2018, 15:31:28

Название: Получение элементов из связанного файла
Отправлено: shss от 03-07-2018, 15:31:28
Добрый день!

У меня есть активный вид, на котором расположен связанный файл с элементами, которые мне нужно получить, но при выборке из RevitLinkedInctance я получаю все элементы типа. Есть ли вариант получить элементы из связанного файла, которые находятся на активном виде центральной модели?
Название: Re: Получение элементов из связанного файла
Отправлено: Александр Игнатович от 03-07-2018, 15:38:28
День добрый!

Конечно, такая возможность имеется. Сначала Вам нужно получить RevitLinkInstance-ы. Всё как обычно, с помощью FilteredElementCollector. Передайте в его конструктор вторым параметром Id вида. Получив список инстансов, для каждого Вы можете получить связанный документ с помощью метода
Код - C# [Выбрать]
  1. var linkDoc = linkInstance.GetLinkDocument();

а дальше с помощью опять же FilteredElementCollector-а (но уже с linkDoc-ом) можно выковырять необходимые элементы
Название: Re: Получение элементов из связанного файла
Отправлено: shss от 03-07-2018, 15:49:19
Я так и делаю, то есть я получил все необходимые связанные документы. Но из этих документов(связанных) мне нужно получить элементы(например FamilyInstance), которые присутствуют на активном виде центральной модели. Ведь как я понимаю, я не могу использовать Id вида центральной модели в связанных файлах, так как они будут разные.

З.Ы.: то есть я открываю центральную модель и вижу связанный файл, на котором есть некая фурнитура, и мне нужно получить эту фурнитуру, которую я вижу. но из связанного файла.
Название: Re: Получение элементов из связанного файла
Отправлено: Александр Игнатович от 03-07-2018, 17:10:33
Немножко поисследовал вопрос.

К сожалению, в общем виде на данный момент вопрос не решается, т.е. получить элемент из связанного файла можно, а вот 100% определить его видимость на виде в основной модели сейчас нельзя.

Впрочем, если речь идет о 3D-виде, то можно для всех найденных объектов определять видимость с помощью ReferenceIntersector-а со включенной опцией FindReferencesInRevitLinks (сначала пытался с помощью CustomExporter-а, но не сильно помогло, хотя ему и можно передать связанный файл, а в метод Export передать вид из основной модели).

Для других видов прийдется определять вручную, находится ли элемент из связанной модели в секущем диапазоне основного вида, не скрыта ли категория элемента из связанного файла, не применяются ли к элементу фильтры и видимость рабочих наборов. К сожалению, еще остается возможность скрыть конкретный элемент из связанного файла, вот этот последний случай можно обработать только для 3D-вида с помощью ReferenceIntersector-а
Название: Re: Получение элементов из связанного файла
Отправлено: shss от 03-07-2018, 17:47:59
К сожалению, это не 3D. Но я тоже думал использовать видимость, думаю может прикрутить фильтрацию по элементам, но хотелось бы как то проще.
А можно ли получить Id вида, который используется в связанном файле? Может он как-то привязан к активному из основной модели?
Название: Re: Получение элементов из связанного файла
Отправлено: Александр Игнатович от 04-07-2018, 09:49:46
Через UI этого можно добиться вот так:

(https://s22.postimg.cc/87agn3trx/linked_File_Display_Mode.png) (https://postimg.cc/image/87agn3trx/)

Тут можно указать, какой вид использовать

Программно сюда доступа пока нет, ну и плюс это не поможет в определении на 100% видимости элементов на виде в основной модели