Получение элементов из связанного файла

Автор Тема: Получение элементов из связанного файла  (Прочитано 3674 раз)

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

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Добрый день!

У меня есть активный вид, на котором расположен связанный файл с элементами, которые мне нужно получить, но при выборке из RevitLinkedInctance я получаю все элементы типа. Есть ли вариант получить элементы из связанного файла, которые находятся на активном виде центральной модели?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
День добрый!

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

а дальше с помощью опять же FilteredElementCollector-а (но уже с linkDoc-ом) можно выковырять необходимые элементы

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Я так и делаю, то есть я получил все необходимые связанные документы. Но из этих документов(связанных) мне нужно получить элементы(например FamilyInstance), которые присутствуют на активном виде центральной модели. Ведь как я понимаю, я не могу использовать Id вида центральной модели в связанных файлах, так как они будут разные.

З.Ы.: то есть я открываю центральную модель и вижу связанный файл, на котором есть некая фурнитура, и мне нужно получить эту фурнитуру, которую я вижу. но из связанного файла.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Немножко поисследовал вопрос.

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

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

Для других видов прийдется определять вручную, находится ли элемент из связанной модели в секущем диапазоне основного вида, не скрыта ли категория элемента из связанного файла, не применяются ли к элементу фильтры и видимость рабочих наборов. К сожалению, еще остается возможность скрыть конкретный элемент из связанного файла, вот этот последний случай можно обработать только для 3D-вида с помощью ReferenceIntersector-а

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
К сожалению, это не 3D. Но я тоже думал использовать видимость, думаю может прикрутить фильтрацию по элементам, но хотелось бы как то проще.
А можно ли получить Id вида, который используется в связанном файле? Может он как-то привязан к активному из основной модели?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Через UI этого можно добиться вот так:



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

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