ReferenceIntersector таким образом ничего не находит , в чем может быть причина ? (луч по факту его пересекает)
Название: Re: SetTargetElementIds в Link документе
Отправлено: Александр Игнатович от 20-08-2019, 17:31:14
Смотрите. Когда Вы видите ElementId, значит речь всегда о текущем документе, либо Document в метод передается другим параметром.
Ещё заметка - вообще, при работе с ReferenceIntersector-ом лучше самому создать вид с нужной детализацией, наложенными фильтрами и т.д., т.е., если Вы ищите, например, стены, создайте вид, задайте видимость категорий и рабочих наборов и т.д. и уже его передавайте в ReferenceIntersector.
А так, с SetTargetElementIds будет работать только в основном файле
Название: Re: SetTargetElementIds в Link документе
Отправлено: Александр Игнатович от 20-08-2019, 17:32:30
Да, ещё забыл. Чтобы в связанных искало, нужно свойство FindReferencesInRevitLinks поставить true.
Название: Re: SetTargetElementIds в Link документе
Отправлено: enot от 20-08-2019, 17:40:21
Смотрите. Когда Вы видите ElementId, значит речь всегда о текущем документе, либо Document в метод передается другим параметром.
Мда значит если есть список ElementId из связанного документа , то лучшим решением является: подать ElementFilter (с категорией/классом этих элементов) в ReferenceIntersector и далее сравнивать полученные Id c исходным списком?
Название: Re: SetTargetElementIds в Link документе
Отправлено: Александр Игнатович от 20-08-2019, 17:44:15
var filter =new ElementParameterFilter(ParameterFilterRuleFactory.CreateEqualsRule(new ElementId(BuiltInParameter.ID_PARAM), new ElementId(<ваш id>)));
Точнее ещё лучше его скомбинировать с быстрым фильтром по классу/категории.
Название: Re: SetTargetElementIds в Link документе
Отправлено: enot от 20-08-2019, 17:57:14
О !, интересно... только не могу сообразить как правильно подать большой список List<ElementIds>ListIds через ElementParameterFilter(ParameterFilterRuleFactory.CreateEqualsRule.... в elementFilter ...
Название: Re: SetTargetElementIds в Link документе
Отправлено: Александр Игнатович от 20-08-2019, 18:19:19
Не, вряд ли. Насколько помню, при создании ElementParameterFilter с передачей нескольких FilterRule будет логическая операция "И", а Вам нужно "Или".
Создавайте список ElementParameterFilter, этот список передавайте в LogicalOrFilter
Название: Re: SetTargetElementIds в Link документе
Отправлено: enot от 20-08-2019, 18:36:48
тогда отфильтровать список ElementId дополнительно по категории элементов как то пока не получается (значит, это должно долго работать)... только через значения параметров ?