Revit.2025.Utils 2025.9.25

dotnet add package Revit.2025.Utils --version 2025.9.25
                    
NuGet\Install-Package Revit.2025.Utils -Version 2025.9.25
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Revit.2025.Utils" Version="2025.9.25" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Revit.2025.Utils" Version="2025.9.25" />
                    
Directory.Packages.props
<PackageReference Include="Revit.2025.Utils" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Revit.2025.Utils --version 2025.9.25
                    
#r "nuget: Revit.2025.Utils, 2025.9.25"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Revit.2025.Utils@2025.9.25
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Revit.2025.Utils&version=2025.9.25
                    
Install as a Cake Addin
#tool nuget:?package=Revit.2025.Utils&version=2025.9.25
                    
Install as a Cake Tool

RevitUtils

Uma biblioteca utilitária para desenvolvimento com Autodesk Revit API, contendo coletores e serviços essenciais para trabalhar com elementos, categorias, unidades e conversões.

📦 Instalação

  dotnet add package RevitUtils

🚀 Funcionalidades

🔍 Coletores (Collectors)

Conjunto abrangente de classes estáticas para coleta eficiente de elementos do Revit:

  • Coletores Genéricos: Métodos universais para coletar qualquer tipo de elemento
  • Coletores de Categoria: Obtenção de categorias e subcategorias
  • Coletores de Paredes: Funcionalidades específicas para paredes básicas
  • Coletores de Salas: Funcionalidades completas para salas válidas e inválidas
  • Coletores de Fases: Busca de fases por nome
  • Coletores de Estilos de Linha: Obtenção de estilos de projeção e corte

⚙️ Conversão de Unidades

Serviços para trabalhar com unidades do Revit:

  • Alteração de Unidades de Exibição: Mudança programática de unidades
  • Conversão de Densidade: Fatores de conversão específicos
  • Obtenção de Unidades Atuais: Recuperação das configurações de unidade

📚 Documentação das Classes

GenericCollectors

Classe estática com métodos universais para coleta de elementos.

Métodos Principais
// Coleta todos os elementos de uma categoria específica
List<TCast> GetAllElementsOfCategory<TCast>(
    Document doc,
    BuiltInCategory cat,
    View? view = null,
    ElementFilter? filter = null
) where TCast : Element

// Coleta todos os tipos de elemento de uma categoria
List<TCast> GetAllElementTypesOfCategory<TCast>(
    Document doc,
    BuiltInCategory cat
) where TCast : ElementType

// Coleta todos os símbolos de família de uma categoria
List<FamilySymbol> GetAllFamilySymbolsOfCategory(
    Document doc,
    BuiltInCategory cat
)

// Coleta todos os elementos de uma classe específica
List<TClass> GetAllElementsOfClass<TClass>(
    Document doc,
    View? view = null,
    ElementFilter? filter = null
) where TClass : Element

// Coleta todos os tipos de elemento de uma classe
List<TClass> GetAllElementTypesOfClass<TClass>(
    Document doc
) where TClass : ElementType

Características:

  • Suporte a filtros personalizados
  • Opção de filtrar por vista específica
  • Validação automática de elementos
  • Tratamento especial para documentos linkados

CategoryCollectors

Classe estática para coleta e manipulação de categorias do Revit.

Métodos Principais
// Obtém todas as categorias do Revit
List<Category> GetAllRevitCategories(
    Document doc,
    CategoryType? categoryType = null
)

// Obtém subcategorias de linhas
List<Category> GetLinesSubCategories(Document doc)

// Obtém todas as categorias de tags
List<BuiltInCategory> GetTagCategories()

Funcionalidades:

  • Filtragem por tipo de categoria (Model, Annotation, Analytical)
  • Acesso às subcategorias de linhas
  • Identificação automática de categorias de tags via regex

WallCollectors

Classe especializada na coleta de paredes.

Métodos Principais
// Obtém todas as paredes básicas do documento
List<Wall> GetBasic(
    Document doc,
    View? view = null
)

Características:

  • Filtra apenas paredes básicas (WallKind.Basic)
  • Exclui paredes empilhadas e membros de paredes empilhadas
  • Validação automática de objetos

RoomCollectors

Classe abrangente para trabalhar com salas (Rooms).

Métodos Principais
// Obtém todas as salas válidas
List<Room> GetAllValidRooms(Document doc, View? view = null)

// Obtém todas as salas inválidas
List<Room> GetAllInvalidRooms(Document doc, View? view = null)

// Obtém salas da opção de design ativa
List<Room> GetValidRoomsFromActiveDesignOption(Document doc, View? view = null)

// Obtém salas de uma opção de design específica
List<Room> GetValidRoomsFromDesignOption(Document doc, ElementId designOptionId)

// Obtém acabamentos de uma sala
List<Element> GetRoomFinishes(
    Document doc,
    Room room,
    SpatialElementGeometryCalculator calculator,
    SubfaceType subfaceType,
    bool includeLinkedElements = false
)

// Obtém linhas de separação de salas
List<ModelLine> GetAllRoomSeparationLines(Document doc)

// Obtém linhas de separação por opção de design
List<Element> GetRoomSeparationLinesFromDesignOption(
    Document doc,
    ElementId designOptionId
)

Características:

  • Validação rigorosa de salas (área > 0, bounding box válido)
  • Suporte a Design Options
  • Análise geométrica para obtenção de acabamentos
  • Suporte a elementos linkados

PhaseCollectors

Utilitários para trabalhar com fases do projeto.

Métodos Principais
// Obtém o ID de uma fase pelo nome
ElementId? GetPhaseIdByName(Document doc, string phaseName)

Características:

  • Busca case-insensitive
  • Tratamento de espaços em branco

LineStyleCollectors

Coletores especializados em estilos de linha.

Métodos Principais
csharp
// Coleta todos os estilos de linha de projeção
List<GraphicsStyle> AllProjectionStyles(Document doc)

// Coleta todos os estilos de linha de corte
List<GraphicsStyle> AllCutStyles(Document doc)

UnitsServices

Serviços para manipulação de unidades de medida.

Métodos Principais
// Altera a unidade de exibição (REQUER TRANSAÇÃO)
void ChangeDisplayUnit(
    Document doc,
    ForgeTypeId specTypeId,
    ForgeTypeId unitTypeId
)

// Obtém a unidade de exibição atual
ForgeTypeId GetDisplayUnit(Document doc, ForgeTypeId specTypeId)

Características:

  • Validação automática de compatibilidade entre SpecTypeId e UnitTypeId
  • Documentação completa com links para API do Revit
  • Tratamento de exceções para unidades incompatíveis

SpecificFactorsServices

Fatores de conversão específicos para densidade de massa.

Propriedades e Métodos
// Fatores de conversão pré-calculados
double KilogramsPerCubicMeter_To_KilogramsPerCubicFoot
double PoundsMassPerCubicFoot_To_KilogramsPerCubicFoot

// Obtém fator de conversão por tipo de unidade
double GetMassDensityConversionFactorByDisplayUnits(ForgeTypeId displayUnitTypeId)

Conversões Suportadas:

  • kg/m³ → kg/ft³
  • lb/ft³ → kg/ft³

🛠️ Exemplos de Uso

Coletando Paredes Básicas

using RevitUtils.Services.Collectors;

// Obter todas as paredes básicas do documento
List<Wall> basicWalls = doc.GetBasic();

// Obter paredes básicas visíveis em uma vista específica
List<Wall> visibleWalls = doc.GetBasic(view: activeView);

Trabalhando com Rooms

using RevitUtils.Services.Collectors;

// Obter todas as salas válidas
List<Room> validRooms = doc.GetAllValidRooms();

// Obter acabamentos de piso de uma sala
var calculator = new SpatialElementGeometryCalculator(doc);
List<Element> floorFinishes = RoomCollectors.GetRoomFinishes(
    doc,
    room,
    calculator,
    SubfaceType.Bottom
);

Alterando Unidades

using RevitUtils.Services.UnitsConversion;

// Dentro de uma transação
using (Transaction trans = new Transaction(doc, "Change Units"))
{
    trans.Start();

    // Alterar unidades de comprimento para metros
    doc.ChangeDisplayUnit(SpecTypeId.Length, UnitTypeId.Meters);
    
    trans.Commit();
}

// Obter unidade atual
ForgeTypeId currentLengthUnit = doc.GetDisplayUnit(SpecTypeId.Length);

Coletando Elementos por Categoria

using RevitUtils.Services.Collectors;

// Obter todas as portas
List<FamilyInstance> doors = doc.GetAllElementsOfCategory<FamilyInstance>(BuiltInCategory.OST_Doors);

// Obter tipos de parede
List<WallType> wallTypes = doc.GetAllElementTypesOfCategory<WallType>(BuiltInCategory.OST_Walls);

🎯 Compatibilidade

  • Autodesk Revit: 2022.1, 2023.1, 2024.2 e 2025.3~~~~
  • .NET Framework: 4.8
  • .NET: 8.0
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2025.9.25 109 9/25/2025

Initial release