EN
RuBIM.tech
RuBIM.tech
14 subscribers
goals
0 of 100 paid subscribers
Как только наберется более 100 подписчиков, я пойму что эта тематика интересна и появится стимул публиковать больше статей.

Знакомство с Revit API, Методы получения элементов. часть 1

Для того чтобы начать взаимодействовать с элементами модели, нужно определится как именно нужно получить элементы. Попросить пользователя выбрать определенные элементы или пользователь сам должен в начале их выбрать, или вовсе не спрашивать пользователя получив нужные элементы.
Начнём с последнего варианта, получим сразу нужные элементы, для этого обратимся к классу FilteredElementCollector и увидим что у этого класса имеется конструктор.
А что такое этот FilteredElementCollector?
А это класс в API Autodesk Revit, который используется для выполнения запросов и фильтрации элементов в проекте Revit. Он позволяет выбирать элементы на основе различных критериев.
А что это такое Конструктор класса?
А это специальный метод в объектно-ориентированном программировании, который вызывается при создании нового объекта (экземпляра) класса. Конструктор класса определяет начальное состояние объекта и инициализирует его атрибуты (поля) значениями, переданными в момент создания объекта.
Когда разобрались что это вообще такое давайте посмотрим на конструкторы. Посмотрим на первых два и поймём в чем они отличаются
collector = FilteredElementCollector(Document) с этим всё понятно он требует для создания всего лишь документ и в этой статье как раз в примере этот коллектором и рассматривался.
А что такое документ?
Document - это класс представляющий собой центральный объект, который предоставляет доступ к данным и функциональности проекта Revit.
Ключевых аспекты класса Document:
1. Доступ к элементам: С помощью объекта Document вы можете выбирать, создавать, изменять и удалять элементы в текущем проекте. Вы можете выполнять поиск элементов по различным критериям, фильтровать их и выполнять разнообразные операции с элементами.
2. Работа с представлениями: Вы можете получить доступ к видам (включая планы, секции, фасады и 3D-виды), настраивать их и выполнять различные операции визуализации и анализа.
3. Манипуляции параметрами: Вы можете читать и изменять параметры элементов, видов и других объектов в проекте. Это позволяет автоматизировать процессы изменения параметров и атрибутов элементов.
4. Транзакции: В Revit API большинство операций, связанных с изменением данных в проекте, выполняются в рамках транзакций. Класс Document предоставляет методы для создания и управления транзакциями, что обеспечивает целостность данных в проекте.
5. Доступ к настройкам проекта: Вы можете получить доступ к настройкам проекта, таким как единицы измерения, параметры проекта и другие свойства.
получить документ можно так: doc = __revit__.ActiveUIDocument.Document
Разберём эту конструкцию подробнее.
__revit__ - это переменная, предоставляемая в среде IronPython, которая обычно используется для доступа к объектам и функциональности Revit API из среды IronPython в Revit.
Эта переменная является частью интеграции между средой Revit и IronPython и предоставляет доступ к различным объектам и методам, которые позволяют взаимодействовать с проектами Revit.
ActiveUIDocument является объектом, предоставляемым Revit API, и представляет собой текущий активный пользовательский интерфейс (UI) документа в Revit.
Этот объект предоставляет доступ к текущему виду, который пользователь просматривает или редактирует, а также к различным событиям и операциям, выполняемым пользователем в UI.
Когда разобрались с документом рассмотрим следующий конструктор и проясним еще вопросы.
collector = FilteredElementCollector(Document, ElementId) - этот конструктор требует еще какой то ElementId, нет, непросто какой то, а определённый Id (уникальный идентификатор Elementа в проекте) класса View. 
View - это класс который представляет собой основу для работы с видами (и представлениями) в Revit. В Revit, виды представляют собой различные способы отображения данных проекта, такие как планы, фасады, срезы, 3D-виды и другие.
Element - это базовый класс, представляющий собой основу для всех элементов, которые могут присутствовать в проекте Revit. Этот класс является частью API и предоставляет общие методы и свойства, которые можно использовать для работы с элементами в проекте.
Класс Element является родительским классом для множества других классов, представляющих конкретные типы элементов в Revit, такие как стены, двери, окна, детали и многие другие. Класс Element определяет общую функциональность, которая применима ко всем элементам, независимо от их типа.
ElementId - это класс который представляет собой уникальный идентификатор элемента в проекте Revit. Каждый элемент в Revit имеет свой собственный ElementId, который служит для однозначной идентификации элемента в рамках проекта. Этот класс предоставляет методы и свойства для работы с идентификаторами элементов.
Наиболее часто используемых методы и свойств класса ElementId:
1. IntegerValue: Свойство, возвращающее целочисленное значение, которое представляет собой уникальный идентификатор элемента. Это значение можно использовать для сравнения и поиска элементов.
2. ElementId, позволяет получить объект элемента, который соответствует данному ElementId. element = doc.GetElement(elementId)
3. InvalidElementId: Статическое свойство, представляющее недопустимый ElementId. Используется, например, когда элемент не найден.
4. Equals(otherId): Метод для сравнения двух ElementId на равенство.
5. ToString(): Метод, возвращающий строковое представление ElementId.
Теперь давайте посмотрим на пример приведенный в документации.
И напишем python скрипт, повторим то что на C# нам демонстрируют, изменив категорию и добавим вывод в консоль RPS
Продолжение про работу с FilteredElementCollector и другими методами в следующих частях

Subscription levels

Читатель

$ 5,4 per month
Считаешь что контент полезен, подпишись и поддержи автора и сможешь читать больше статей.

Продвинутый читатель

$ 16 per month
С этим уровнем подписки уже можно будет читать полный цикл статей про разработку инструментов.

Нетерпеливый читатель

$ 32 per month
С этим уровнем вы раньше всех сможете читать ещё неопубликованные статьи для других подписчиков, а также будет доступен исходный код из статей.
...

Пытливый читатель

$ 54 per month
С этим уровнем сможете вступить в закрытый телеграмм чат.
Go up