Дублирование элементов в AllowReference () (Интерфейса ISelectionFilter)

Автор Тема: Дублирование элементов в AllowReference () (Интерфейса ISelectionFilter)  (Прочитано 1623 раз)

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

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Доброго времени суток. Работаю в файле АР и подгружен файл ВК. Задача выбрать в связанном файле все семейства определенной категории (Окна) с содержанием в имени слова "Отв". Выбираю элементы
через PickObjects(ObjectType.LinkedElement ... Происходит такая ситуация: выбирая один элемент рамкой в IList<Reference>приходит всегда два Reference - одинаковые по всем параметрам (дубликаты). При выделении рамкой, как я понимаю он не должен заходить два раза в true метода AllowReference,  а он заходит. Если выбирать рамкой системные элементы - воздуховоды , трубы и тд , то приходит один элемент. Если выбирать нажатием на один элемент (не рамка) , то приходит один элемент. Окна , двери и тд , также дублируются, а вот стены , например, не дублируются. Категорию семейства менял (Окна на Обобщенную модель). Очень интересуют следующие вопросы:
1. Почему происходит дублирование в IList<Reference> с  семействами FamilyInstance (мое предположение) что только с ними ?
2. Наилучший способ это исправить ?


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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
1. Да, поведение странное, согласен, хотя reference-ы не совсем одинаковые на самом деле.
Цитировать
первый:9ef8c863-8620-436f-a86b-e26a0e829245-00039e53:0:RVTLINK/9ef8c863-8620-436f-a86b-e26a0e829245-00039e52:414482
второй:9ef8c863-8620-436f-a86b-e26a0e829245-00039e53:0:RVTLINK/9ef8c863-8620-436f-a86b-e26a0e829245-00039e52:414482:0:INSTANCE:469411

Здесь по факту:
Цитировать
9ef8c863-8620-436f-a86b-e26a0e829245-00039e53 - uniqueid RevitLinkInstance
:0:RVTLINK/
9ef8c863-8620-436f-a86b-e26a0e829245-00039e52: - uniqueid RevitLinkType
414482 - ид элемента в связанном файле
:0:INSTANCE:
469411 - какая-то очень странная id, по ней находится FamilySymbol, но его нет в списке Family.GetSymbolIds()

2. реализацию ISelectionFilter лучше не трогать, обработать результаты, возвращаемые PickObjects

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

  • ADN OPEN
  • Сообщений: 45
  • Карма: 0
Если не трогать реализацию ISelectionFilter, то как сделать проверку на категорию и имя семейства? Получается нельзя выбирать FamilyInstance в связанном фале и получать правильный результат ? Нашел похожий вопрос тут https://adn-cis.org/forum/index.php?topic=2757.msg38137#msg38137