Что такое категория, в данном случае стен BuiltInCategory.OST_Walls ?
И ещё Почему по второму коду я не могу выбрать также например колонны или балки. Стена тоже может быть несущей или не несущей. Плита тоже, а колонны с балками где-то в "сторонке".
Как получить список колонн и балок например? Там же двери
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: Виктор Чекалин от 08-03-2018, 12:19:09
RevitTormentor, Во первом случае вы получите только типоразмеры стен. Во втором - и типоразмеры и экземпляры стен. Если говорить в целом, то один и тот же результат, можно получить разными фильтрами. Как делать выборку - по категории или по названию класса - зависит от ситуации. В случае со стенами, вроде не принципиально. В случае, например, с арматурой, там категория не равно одному классу.
Каждый объект в Revit имеет категорию. BuiltInCategory.OST_Walls - это лишь идентификатор этой категории.
Что качается остальных вопросов, то они немного странные. FilteredElementCollector позволяет выбрать объекты по каким либо признакам. Во-втором коде ищите объекты, у которых категория - Стена. Нужны двери - ищите по категории Двери (OST_Doors). Нужны колонны - OST_Columns и т.п.
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: RevitTormentor от 08-03-2018, 13:02:41
Виктор спасибо за ответ, А как получить список колонн по подобию кода
Если вместо Wall вставлю Columns Column или что-то подобное то ничего не получится. Как выбрать колонны в проекте? Потом уже я постараюсь дожать дальнейшую фильтрацию и группировку. Спасибо
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: Виктор Чекалин от 08-03-2018, 13:26:49
RevitTormentor, Колонны заданы семейством, соответственно это экземпляр класса FamilyInstance. Но если просто вместо Wall вы подставите FamilyInstance, то почти все объекты модели будут в результате. Так что колонны только по категории искать.
FilteredElementCollector collector = new FilteredElementCollector(doc);
var columns = collector
.OfCategory(BuiltInCategory.OST_Columns)
.WhereElementIsNotElementType();
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: RevitTormentor от 08-03-2018, 13:56:19
Виктор, а разве в Ревите не всё создано семействами? Стены Перекрытия Размеры Уровни, это ведь тоже семейства? Почему колонны как то выделены особняком?
Запутался немного. Стены же тоже семейства, почему к ним другой доступ имеется, а к колоннам нет?
Просто это отразится потом на всём остальном коде, хочется разобраться во внутренней структуре.
Спасибо.
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: Виктор Чекалин от 08-03-2018, 14:03:22
RevitTormentor, Есть встроенные семейства (Стены, Пол, трубы и т.п.), а есть пользовательские. Встроенные семейства в API имеют свои классы. Пользовательские же семейства являются классами FamilyInstance.
Название: Re: Wall или BuiltInCategory.OST_Walls
Отправлено: RevitTormentor от 08-03-2018, 14:06:17
Ок. Однако странное дело. Колонны не являются встроенным семейством. А если я загружу своё какое-нибудь семейство стен, то видимо и доступ к ним тоже будет через famalyInstance. Всё теперь понял. Придётся переделать пару методов.