Как получить доступ ко всем типам семейства через revit API?

Можно ли получить доступ ко всем типам семейства определенной категории (например, Windows, Doors, ...) с помощью Revit API? В отличие от экземпляров. Насколько я знаю, использование FilteredElementCollector(doc).OfCategory(...).ToElements() или FilteredElementCollector(doc).OfClass(...).ToElements() указывают на экземпляры этого класса / типа, но я хочу проверить, загружен ли конкретный тип в Revit, даже если он еще не создан.

(Я использую pyRevit, Revit 2017)

Большое спасибо!

3 ответа

Решение

В вашем FilterElementCollector, перед тем как вы выполните ToElements(), вы должны добавить WhereElementIsElementType(), затем ToElements().

Для элементов на основе семейства, таких как двери, вы получите элементы FamilySymbol - оттуда вы можете проверить, активны ли они.

Я полагаю, что самый простой подход для определения всех семей, которые были созданы, - это извлечь все семейные экземпляры.

Из этих примеров вы можете определить символ семьи и саму семью и убедиться, что она была создана.

Если такого экземпляра нет, вы не получите ни фамилии, ни фамилии.

Ох, перечитывая, я вижу, что вы хотите наоборот, список всех семей, независимо от того, были ли они созданы или нет. О нет, список всех символов семьи определенной категории, независимо от того, были ли они созданы или нет.

Это на самом деле уже продемонстрировано одним из многочисленных фрагментов сборщика отфильтрованных элементов в примерах The Building Coder. CmdCollectorPerformance модуль:

https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/CmdCollectorPerformance.cs#L294-L332

Чтобы быть точным, метод GetFamiliesOfCategory реализовано там извлекает все семейства данной категории. Вы можете легко приспособить это, чтобы получить семейные символы вместо этого.

Ок извини Очевидно, я был неправ, он указывает на все элементы, включая те, которые не были созданы.

Другие вопросы по тегам