VolocyNazad.Revit.Sugar
2025.0.9
dotnet add package VolocyNazad.Revit.Sugar --version 2025.0.9
NuGet\Install-Package VolocyNazad.Revit.Sugar -Version 2025.0.9
<PackageReference Include="VolocyNazad.Revit.Sugar" Version="2025.0.9" />
<PackageVersion Include="VolocyNazad.Revit.Sugar" Version="2025.0.9" />
<PackageReference Include="VolocyNazad.Revit.Sugar" />
paket add VolocyNazad.Revit.Sugar --version 2025.0.9
#r "nuget: VolocyNazad.Revit.Sugar, 2025.0.9"
#:package VolocyNazad.Revit.Sugar@2025.0.9
#addin nuget:?package=VolocyNazad.Revit.Sugar&version=2025.0.9
#tool nuget:?package=VolocyNazad.Revit.Sugar&version=2025.0.9
Revit.Sugar
Syntactic sugar for working with the Revit API: extension methods and small helpers with no DI and no state.
Revit.Sugar — a set of extension methods and static helpers that simplify common operations on Revit API objects: bounding box intersection, ElementId handling that doesn't depend on the API version, wrappers over FilteredElementCollector, ElementFilter factories, and a fluent IUpdater builder.
Features
BoundingBoxXYZ.Overlaps(other, tolerance)— a fast check for whether two bounding boxes' world bounds intersect (accounting forTransform), suitable as a broad-phase check before exact geometric intersection.ElementId.IsCategory(category),.ToBuiltInCategory(),.Value()— hide the difference betweenIntegerValue(before Revit 2024) andValue(2024+).Category.BuiltInCategory— the same forCategory(versions before 2024 only).FilteredElementCollector.OfClass<T>(),.WhereElementIs<T>()— generic wrappers overOfClass/WhereElementIsElementType/WhereElementIsNotElementType.ElementFilterUtils.AllFilter(),.EmptyFilter(),.CategoryTypeFilter(doc, categoryType, inverse)— ready-madeElementFilterfactories.UpdaterBuilder— a fluentIUpdaterbuilder that avoids implementing the interface by hand.
Installation
dotnet add package VolocyNazad.Revit.Sugar
Usage
using Revit.Sugar;
// Bounding box intersection
bool overlaps = boxA.Overlaps(boxB);
// ElementId, independent of the Revit version
BuiltInCategory category = elementId.ToBuiltInCategory();
bool isWalls = elementId.IsCategory(BuiltInCategory.OST_Walls);
// FilteredElementCollector
var walls = new FilteredElementCollector(doc).WhereElementIs<Wall>().ToElements();
// Filter factories
ElementFilter all = ElementFilterUtils.AllFilter();
ElementFilter modelCategories = ElementFilterUtils.CategoryTypeFilter(doc, CategoryType.Model);
// IUpdater without implementing the interface by hand
IUpdater updater = new UpdaterBuilder()
.SetUpdaterId(new UpdaterId(addinId, new Guid("...")))
.SetUpdaterName("My Updater")
.SetChangePriority(ChangePriority.Structure)
.SetAction(data => { /* ... */ })
.Build();
Supported Revit versions
The package is built and tested for Revit 2021.1.9, 2023.0.0, and 2025.0.0. Revit 2021 and 2023 target net48; Revit 2025 targets net8.0-windows.
Requirements
- .NET SDK 10.0.103+ (see
global.json) - Revit API (the
Revit_All_Main_Versions_API_x64package)
License
MIT, see LICENSE.
Development documentation
Contributing
Read CONTRIBUTING.md before submitting changes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- Revit_All_Main_Versions_API_x64 (>= 2025.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.