diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index 0c78cc7..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "permissions": { - "allow": [ - "WebFetch(domain:github.com)", - "Bash(git show-ref:*)", - "WebFetch(domain:raw.githubusercontent.com)", - "WebFetch(domain:api.github.com)", - "WebSearch", - "WebFetch(domain:www.nuget.org)", - "Bash(git:*)", - "Bash(bash:*)", - "Bash(powershell:*)", - "Bash(pwsh:*)", - "Edit(*)", - "Write(*)", - "Read(*)", - "Bash(dotnet:*)" - ] - } -} diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index e068b5e..c119f0e 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -3,7 +3,7 @@ name: CD on: push: tags: - - 'v*.*.*' + - "v*.*.*" jobs: pack-and-publish: @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - configuration: [R2021, R2022, R2023, R2024, R2025, R2026] + configuration: [R2020, R2021, R2022, R2023, R2024, R2025, R2026, R2027] steps: - name: Checkout @@ -21,18 +21,16 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 8.0.x - 4.8.x + dotnet-version: 8.0.x - name: Restore - run: dotnet restore source/Apibim.Revit.Extensions/Apibim.Revit.Extensions.csproj -c ${{ matrix.configuration }} + run: dotnet restore Revit.Extensions/Revit.Extensions.csproj -p:Configuration=${{ matrix.configuration }} - name: Build - run: dotnet build source/Apibim.Revit.Extensions/Apibim.Revit.Extensions.csproj -c ${{ matrix.configuration }} --no-restore + run: dotnet build Revit.Extensions/Revit.Extensions.csproj -p:Configuration=${{ matrix.configuration }} --no-restore - name: Pack - run: dotnet pack source/Apibim.Revit.Extensions/Apibim.Revit.Extensions.csproj -c ${{ matrix.configuration }} --no-build --output ./nupkgs + run: dotnet pack Revit.Extensions/Revit.Extensions.csproj -p:Configuration=${{ matrix.configuration }} --no-build --output ./nupkgs - name: Push to NuGet run: dotnet nuget push "./nupkgs/*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ae986df..a11049f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,18 +2,23 @@ name: CI on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] jobs: - build: + build-and-test: + name: Revit ${{ matrix.revit }} runs-on: windows-latest + permissions: + checks: write + contents: read + strategy: fail-fast: false matrix: - configuration: [R2021, R2022, R2023, R2024, R2025, R2026] + revit: [2020, 2021, 2022, 2023, 2024, 2025, 2026] steps: - name: Checkout @@ -22,38 +27,32 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: | - 8.0.x - 4.8.x + dotnet-version: 8.0.x - name: Restore - run: dotnet restore source/Apibim.Revit.Extensions/Apibim.Revit.Extensions.csproj -c ${{ matrix.configuration }} + run: dotnet restore Revit.Extensions.Tests/Revit.Extensions.Tests.csproj -p:Configuration=R${{ matrix.revit }} - name: Build - run: dotnet build source/Apibim.Revit.Extensions/Apibim.Revit.Extensions.csproj -c ${{ matrix.configuration }} --no-restore - - test: - runs-on: windows-latest - needs: build + run: dotnet build Revit.Extensions.Tests/Revit.Extensions.Tests.csproj -p:Configuration=R${{ matrix.revit }} --no-restore - steps: - - name: Checkout - uses: actions/checkout@v4 + - name: Run tests + run: > + dotnet test "Revit.Extensions.Tests/bin/R${{ matrix.revit }}/Revit.Extensions.Tests.dll" + --logger "trx;LogFileName=results.trx" + --results-directory "${{ github.workspace }}/TestResults/${{ matrix.revit }}" - - name: Setup .NET - uses: actions/setup-dotnet@v4 + - name: Publish test results + uses: dorny/test-reporter@v1 + if: always() with: - dotnet-version: 8.0.x - - - name: Restore - run: dotnet restore tests/Apibim.Revit.Extensions.Tests/Apibim.Revit.Extensions.Tests.csproj -c R2025 - - - name: Test - run: dotnet test tests/Apibim.Revit.Extensions.Tests/Apibim.Revit.Extensions.Tests.csproj -c R2025 --no-restore --logger "trx;LogFileName=test-results.trx" + name: Tests – Revit ${{ matrix.revit }} + path: "TestResults/${{ matrix.revit }}/results.trx" + reporter: dotnet-trx - - name: Upload test results + - name: Upload test artifact uses: actions/upload-artifact@v4 if: always() with: - name: test-results - path: "**/TestResults/*.trx" + name: test-results-${{ matrix.revit }} + path: "TestResults/${{ matrix.revit }}/results.trx" + if-no-files-found: warn diff --git a/.gitignore b/.gitignore index af65b4b..c0746a8 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,9 @@ packages/ .DS_Store Thumbs.db +## Claude Code +.claude/ + ## Test results TestResults/ *.trx diff --git a/Apibim.Revit.Extensions.sln b/Apibim.Revit.Extensions.sln deleted file mode 100644 index b5c77ad..0000000 --- a/Apibim.Revit.Extensions.sln +++ /dev/null @@ -1,56 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source", "source", "{B8EFCA5F-814F-285C-A8CB-F00F14650265}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apibim.Revit.Extensions", "source\Apibim.Revit.Extensions.csproj", "{C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Apibim.Revit.Extensions.Tests", "tests\Apibim.Revit.Extensions.Tests.csproj", "{18101238-64C3-4441-9B9B-04590F5286DE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|Any CPU.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|Any CPU.Build.0 = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|x64.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|x64.Build.0 = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|x86.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Debug|x86.Build.0 = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|Any CPU.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|Any CPU.Build.0 = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|x64.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|x64.Build.0 = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|x86.ActiveCfg = R2019|Any CPU - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.Release|x86.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|Any CPU.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|Any CPU.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|x64.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|x64.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|x86.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Debug|x86.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|Any CPU.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|Any CPU.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|x64.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|x64.Build.0 = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|x86.ActiveCfg = R2019|Any CPU - {18101238-64C3-4441-9B9B-04590F5286DE}.Release|x86.Build.0 = R2019|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A} = {B8EFCA5F-814F-285C-A8CB-F00F14650265} - {18101238-64C3-4441-9B9B-04590F5286DE} = {0AB3BF05-4346-4AA6-1389-037BE0695223} - EndGlobalSection -EndGlobal diff --git a/Build.props b/Build.props index 20983d6..a0eb51b 100644 --- a/Build.props +++ b/Build.props @@ -1,15 +1,9 @@ - - R2019;R2020;R2021;R2022;R2023;R2024;R2025;R2026;R2027 + R2020;R2021;R2022;R2023;R2024;R2025;R2026;R2027 AnyCPU - - - 2019 - net47 - 2020 net47 @@ -43,13 +37,11 @@ net8.0-windows - bin\$(Configuration)\ DEBUG;$(Configuration);REVIT_$(RevitVersion) - x64 default @@ -65,14 +57,9 @@ - + - diff --git a/CLAUDE.md b/CLAUDE.md index f2d1019..925b1c3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,29 +1,27 @@ -# Apibim.Revit.Extensions — Developer Guide +# Revit.Extensions — Developer Guide ## Project overview Open-source library of Revit API extension methods, designed to support all Revit versions from 2019 to 2027. -Published as a NuGet package: `Apibim.Revit.Extensions`. +Published as a NuGet package: `Revit.Extensions`. ## Repository structure ``` -Apibim.Revit.Extensions/ +Revit.Extensions/ ├── .github/workflows/ │ ├── ci.yml ← Build + test on every push / PR │ └── cd.yml ← Pack + publish NuGet on tag v*.*.* -├── source/ -│ └── Apibim.Revit.Extensions/ -│ ├── Apibim.Revit.Extensions.csproj +├── Revit.Extensions/ +│ ├── Revit.Extensions.csproj │ └── Extensions/ │ ├── ElementExtensions.cs │ ├── GeometryExtensions.cs │ ├── PointExtensions.cs │ ├── DocumentExtensions.cs │ └── AsyncTasksExecutor.cs -├── tests/ -│ └── Apibim.Revit.Extensions.Tests/ -│ ├── Apibim.Revit.Extensions.Tests.csproj +├── Revit.Extensions.Tests/ +│ ├── Revit.Extensions.Tests.csproj │ └── Extensions/ │ ├── GeometryExtensionsTests.cs │ ├── AsyncTasksExecutorTests.cs @@ -32,14 +30,13 @@ Apibim.Revit.Extensions/ ├── Directory.Build.props ← Imports Build.props; sets Nullable/ImplicitUsings/LangVersion ├── nuget.config ├── .gitignore -└── Apibim.Revit.Extensions.sln +└── Revit.Extensions.sln ``` ## Build configurations | Configuration | Revit | TargetFramework | |---------------|-------|-----------------| -| R2019 | 2019 | net47 | | R2020 | 2020 | net47 | | R2021 | 2021 | net48 | | R2022 | 2022 | net48 | @@ -55,23 +52,20 @@ Each configuration sets `REVIT_` as a compile-time constant (e.g. `REVIT_2 ```bash # Build for a specific Revit version -dotnet build source/Apibim.Revit.Extensions -c R2026 +dotnet build source/Revit.Extensions -c R2026 # Build all versions (PowerShell) foreach ($c in @("R2021","R2022","R2023","R2024","R2025","R2026")) { - dotnet build source/Apibim.Revit.Extensions -c $c + dotnet build source/Revit.Extensions -c $c } -# Run tests (always with R2025 — only version that works headless) -dotnet test tests/Apibim.Revit.Extensions.Tests -c R2025 - # Create NuGet package -dotnet pack source/Apibim.Revit.Extensions -c R2026 --output ./nupkgs +dotnet pack source/Revit.Extensions -c R2026 --output ./nupkgs ``` ## NuGet package -- **PackageId:** `Apibim.Revit.Extensions` +- **PackageId:** `Revit.Extensions` - **Version scheme:** `{RevitYear}.0.{patch}` → e.g. `2026.0.1` - **Trigger CD:** push a tag matching `v*.*.*` → `git tag v2026.0.1 && git push --tags` - **Secret required:** `NUGET_API_KEY` in GitHub repository secrets @@ -91,10 +85,10 @@ Example in `PointExtensions.cs`: ## Adding new extensions -1. Create `source/Apibim.Revit.Extensions/Extensions/MyExtensions.cs` -2. Use `namespace Apibim.Revit.Extensions;` +1. Create `Revit.Extensions/Extensions/MyExtensions.cs` +2. Use `namespace Revit.Extensions;` 3. Mark class `public static` -4. Add unit tests in `tests/.../Extensions/MyExtensionsTests.cs` +4. Add unit tests in `Revit.Extensions.Tests/Extensions/MyExtensionsTests.cs` ## Notes diff --git a/README.md b/README.md index 184e7ea..8468b0a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,145 @@ +
+ Revit.Extensions + # Revit.Extensions -The unofficial Extensions for Revit API + +[![CI](https://github.com/apibim/Revit.Extensions/actions/workflows/ci.yml/badge.svg)](https://github.com/apibim/Revit.Extensions/actions/workflows/ci.yml) +[![NuGet](https://img.shields.io/nuget/v/Revit.Extensions?color=blue)](https://www.nuget.org/packages/Revit.Extensions) +[![NuGet Downloads](https://img.shields.io/nuget/dt/Revit.Extensions)](https://www.nuget.org/packages/Revit.Extensions) +[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) + +
+ +A collection of extension methods for the **Autodesk Revit API**, designed to reduce boilerplate and make Revit add-in development more expressive. Supports **Revit 2020 – 2027**. + +--- + +## Installation + +``` +dotnet add package Revit.Extensions +``` + +Or search for **`Revit.Extensions`** in the NuGet Package Manager inside Visual Studio. + +--- + +## Revit version support + +| Revit | Target framework | NuGet version | +| ----- | ---------------- | ------------- | +| 2020 | net47 | 2020.0.\* | +| 2021 | net48 | 2021.0.\* | +| 2022 | net48 | 2022.0.\* | +| 2023 | net48 | 2023.0.\* | +| 2024 | net48 | 2024.0.\* | +| 2025 | net8.0-windows | 2025.0.\* | +| 2026 | net8.0-windows | 2026.0.\* | +| 2027 | net8.0-windows | 2027.0.\* | + +The package automatically targets the correct framework — no manual configuration needed. + +--- + +## API reference + +### `GeometryExtensions` + +Helpers for working with Revit geometry types (`XYZ`, `Outline`, `BoundingBoxXYZ`). + +```csharp +using Revit.Extensions; + +// Convert XYZ ↔ value tuple +XYZ point = new XYZ(1.0, 2.0, 3.0); +(double X, double Y, double Z) vec = point.ToVector(); // (1.0, 2.0, 3.0) +XYZ restored = vec.ToXYZ(); // XYZ(1.0, 2.0, 3.0) + +// Expand an Outline uniformly (default: 10 ft) +Outline outline = new Outline(new XYZ(0, 0, 0), new XYZ(5, 5, 5)); +Outline expanded = outline.Extend(size: 2); // min −2, max +2 in every axis + +// Transform a BoundingBoxXYZ from local to world space +BoundingBoxXYZ bbox = element.get_BoundingBox(view); +BoundingBoxXYZ? worldBbox = bbox.TransformBoundingBox(); +``` + +--- + +### `PointExtensions` + +Unit conversion for `XYZ` coordinates using Revit's `UnitUtils`. + +```csharp +using Autodesk.Revit.DB; +using Revit.Extensions; + +// Revit stores coordinates in feet internally. +// Convert a point to meters (Revit 2021+): +XYZ pointInFeet = new XYZ(3.28084, 0, 0); +XYZ pointInMeters = pointInFeet.Recalculate(UnitTypeId.Meters); +// → XYZ(1.0, 0, 0) +``` + +> **Revit 2020** uses the legacy `DisplayUnitType` enum — the overload is selected automatically via conditional compilation. + +--- + +### `ElementExtensions` + +Helpers for collecting elements and grids from the active document. + +```csharp +using Revit.Extensions; + +// Collect selected elements, or fall back to all FamilyInstances + HostObjects in the active view +IList elements = ElementExtensions.GetAllElementOrSelected(uiDocument); + +// Get all grids from the level closest to elevation 0 +IList grids = ElementExtensions.GetAllGridFromFirstLevel(document, out string? levelName); +if (levelName is not null) + TaskDialog.Show("Grids", $"Found {grids.Count} grids on level '{levelName}'."); +``` + +--- + +### `AsyncTasksExecutor` + +Run async code synchronously inside the Revit event loop, where `async/await` on the main thread is unsupported. + +```csharp +using Revit.Extensions; + +// Execute a Task synchronously +string result = AsyncTasksExecutor.Execute(async () => +{ + await Task.Delay(100); + return "done"; +}); + +// Execute a ValueTask synchronously +int value = AsyncTasksExecutor.Execute(async () => +{ + await Task.Yield(); + return 42; +}); +``` + +--- + +## Contributing + +Contributions are welcome! Please open an issue or submit a pull request. + +1. Fork the repository +2. Create a feature branch: `git checkout -b feature/my-extension` +3. Add your extension in `Revit.Extensions/Extensions/` with a corresponding test in `tests/Extensions/` +4. Open a pull request against `main` + +See [CLAUDE.md](CLAUDE.md) for build commands and project conventions. + +--- + +## License + +MIT © [Apibim SpA](https://apibim.com) diff --git a/tests/Extensions/AsyncTasksExecutorTests.cs b/Revit.Extensions.Tests/Extensions/AsyncTasksExecutorTests.cs similarity index 96% rename from tests/Extensions/AsyncTasksExecutorTests.cs rename to Revit.Extensions.Tests/Extensions/AsyncTasksExecutorTests.cs index a12798c..8c14bab 100644 --- a/tests/Extensions/AsyncTasksExecutorTests.cs +++ b/Revit.Extensions.Tests/Extensions/AsyncTasksExecutorTests.cs @@ -1,7 +1,7 @@ using FluentAssertions; using Xunit; -namespace Apibim.Revit.Extensions.Tests; +namespace Revit.Extensions.Tests; public class AsyncTasksExecutorTests { diff --git a/tests/Extensions/GeometryExtensionsTests.cs b/Revit.Extensions.Tests/Extensions/GeometryExtensionsTests.cs similarity index 98% rename from tests/Extensions/GeometryExtensionsTests.cs rename to Revit.Extensions.Tests/Extensions/GeometryExtensionsTests.cs index 33a0557..b351e5c 100644 --- a/tests/Extensions/GeometryExtensionsTests.cs +++ b/Revit.Extensions.Tests/Extensions/GeometryExtensionsTests.cs @@ -2,7 +2,7 @@ using FluentAssertions; using Xunit; -namespace Apibim.Revit.Extensions.Tests; +namespace Revit.Extensions.Tests; /// /// Tests for . diff --git a/tests/Extensions/PointExtensionsTests.cs b/Revit.Extensions.Tests/Extensions/PointExtensionsTests.cs similarity index 95% rename from tests/Extensions/PointExtensionsTests.cs rename to Revit.Extensions.Tests/Extensions/PointExtensionsTests.cs index eb7262f..1649595 100644 --- a/tests/Extensions/PointExtensionsTests.cs +++ b/Revit.Extensions.Tests/Extensions/PointExtensionsTests.cs @@ -2,7 +2,7 @@ using FluentAssertions; using Xunit; -namespace Apibim.Revit.Extensions.Tests; +namespace Revit.Extensions.Tests; /// /// Tests for . diff --git a/tests/Apibim.Revit.Extensions.Tests.csproj b/Revit.Extensions.Tests/Revit.Extensions.Tests.csproj similarity index 58% rename from tests/Apibim.Revit.Extensions.Tests.csproj rename to Revit.Extensions.Tests/Revit.Extensions.Tests.csproj index 35b88d7..1ea6a18 100644 --- a/tests/Apibim.Revit.Extensions.Tests.csproj +++ b/Revit.Extensions.Tests/Revit.Extensions.Tests.csproj @@ -1,14 +1,18 @@  - net8.0-windows false - enable - enable + + + + + $(NoWarn);MSB3277 - + diff --git a/Revit.Extensions.sln b/Revit.Extensions.sln new file mode 100644 index 0000000..02c8a33 --- /dev/null +++ b/Revit.Extensions.sln @@ -0,0 +1,66 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source", "source", "{B8EFCA5F-814F-285C-A8CB-F00F14650265}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Revit.Extensions", "Revit.Extensions\Revit.Extensions.csproj", "{C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Revit.Extensions.Tests", "Revit.Extensions.Tests\Revit.Extensions.Tests.csproj", "{18101238-64C3-4441-9B9B-04590F5286DE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + R2020|Any CPU = R2020|Any CPU + R2021|Any CPU = R2021|Any CPU + R2022|Any CPU = R2022|Any CPU + R2023|Any CPU = R2023|Any CPU + R2024|Any CPU = R2024|Any CPU + R2025|Any CPU = R2025|Any CPU + R2026|Any CPU = R2026|Any CPU + R2027|Any CPU = R2027|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2020|Any CPU.ActiveCfg = R2020|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2020|Any CPU.Build.0 = R2020|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2021|Any CPU.ActiveCfg = R2021|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2021|Any CPU.Build.0 = R2021|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2022|Any CPU.ActiveCfg = R2022|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2022|Any CPU.Build.0 = R2022|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2023|Any CPU.ActiveCfg = R2023|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2023|Any CPU.Build.0 = R2023|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2024|Any CPU.ActiveCfg = R2024|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2024|Any CPU.Build.0 = R2024|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2025|Any CPU.ActiveCfg = R2025|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2025|Any CPU.Build.0 = R2025|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2026|Any CPU.ActiveCfg = R2026|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2026|Any CPU.Build.0 = R2026|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2027|Any CPU.ActiveCfg = R2027|Any CPU + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A}.R2027|Any CPU.Build.0 = R2027|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2020|Any CPU.ActiveCfg = R2020|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2020|Any CPU.Build.0 = R2020|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2021|Any CPU.ActiveCfg = R2021|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2021|Any CPU.Build.0 = R2021|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2022|Any CPU.ActiveCfg = R2022|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2022|Any CPU.Build.0 = R2022|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2023|Any CPU.ActiveCfg = R2023|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2023|Any CPU.Build.0 = R2023|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2024|Any CPU.ActiveCfg = R2024|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2024|Any CPU.Build.0 = R2024|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2025|Any CPU.ActiveCfg = R2025|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2025|Any CPU.Build.0 = R2025|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2026|Any CPU.ActiveCfg = R2026|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2026|Any CPU.Build.0 = R2026|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2027|Any CPU.ActiveCfg = R2027|Any CPU + {18101238-64C3-4441-9B9B-04590F5286DE}.R2027|Any CPU.Build.0 = R2027|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {C5E9459C-38FB-4F95-98BD-FFBB9B075D7A} = {B8EFCA5F-814F-285C-A8CB-F00F14650265} + {18101238-64C3-4441-9B9B-04590F5286DE} = {0AB3BF05-4346-4AA6-1389-037BE0695223} + EndGlobalSection +EndGlobal diff --git a/source/Extensions/AsyncTasksExecutor.cs b/Revit.Extensions/Extensions/AsyncTasksExecutor.cs similarity index 93% rename from source/Extensions/AsyncTasksExecutor.cs rename to Revit.Extensions/Extensions/AsyncTasksExecutor.cs index 82068b2..2e5e714 100644 --- a/source/Extensions/AsyncTasksExecutor.cs +++ b/Revit.Extensions/Extensions/AsyncTasksExecutor.cs @@ -1,4 +1,6 @@ -namespace Apibim.Revit.Extensions; +using System.Threading.Tasks; + +namespace Revit.Extensions; /// /// Helpers for executing asynchronous work synchronously inside the Revit event loop, diff --git a/source/Extensions/DocumentExtensions.cs b/Revit.Extensions/Extensions/DocumentExtensions.cs similarity index 84% rename from source/Extensions/DocumentExtensions.cs rename to Revit.Extensions/Extensions/DocumentExtensions.cs index eac2768..61958e0 100644 --- a/source/Extensions/DocumentExtensions.cs +++ b/Revit.Extensions/Extensions/DocumentExtensions.cs @@ -1,6 +1,6 @@ using Autodesk.Revit.DB; -namespace Apibim.Revit.Extensions; +namespace Revit.Extensions; /// /// Extension methods for . diff --git a/source/Extensions/ElementExtensions.cs b/Revit.Extensions/Extensions/ElementExtensions.cs similarity index 98% rename from source/Extensions/ElementExtensions.cs rename to Revit.Extensions/Extensions/ElementExtensions.cs index b2a3c45..4fcff4c 100644 --- a/source/Extensions/ElementExtensions.cs +++ b/Revit.Extensions/Extensions/ElementExtensions.cs @@ -1,7 +1,7 @@ using Autodesk.Revit.DB; using Autodesk.Revit.UI; -namespace Apibim.Revit.Extensions; +namespace Revit.Extensions; /// /// Extension methods for working with Revit elements and collectors. diff --git a/source/Extensions/GeometryExtensions.cs b/Revit.Extensions/Extensions/GeometryExtensions.cs similarity index 98% rename from source/Extensions/GeometryExtensions.cs rename to Revit.Extensions/Extensions/GeometryExtensions.cs index 1cbd6a3..85bb39f 100644 --- a/source/Extensions/GeometryExtensions.cs +++ b/Revit.Extensions/Extensions/GeometryExtensions.cs @@ -1,6 +1,6 @@ using Autodesk.Revit.DB; -namespace Apibim.Revit.Extensions; +namespace Revit.Extensions; /// /// Extension methods for working with Revit geometry types. diff --git a/source/Extensions/PointExtensions.cs b/Revit.Extensions/Extensions/PointExtensions.cs similarity index 97% rename from source/Extensions/PointExtensions.cs rename to Revit.Extensions/Extensions/PointExtensions.cs index fc2cb6f..8c790f1 100644 --- a/source/Extensions/PointExtensions.cs +++ b/Revit.Extensions/Extensions/PointExtensions.cs @@ -1,6 +1,6 @@ using Autodesk.Revit.DB; -namespace Apibim.Revit.Extensions; +namespace Revit.Extensions; /// /// Extension methods for working with Revit coordinate points. diff --git a/Revit.Extensions/Revit.Extensions.csproj b/Revit.Extensions/Revit.Extensions.csproj new file mode 100644 index 0000000..5b427c0 --- /dev/null +++ b/Revit.Extensions/Revit.Extensions.csproj @@ -0,0 +1,29 @@ + + + + Revit.Extensions + Revit.Extensions + $(RevitVersion).0.1 + + + Revit.Extensions + Apibim SpA + com + Extension methods for Autodesk Revit API + https://github.com/apibim/Revit.Extensions + MIT + README.md + icon.png + false + + + + + + + + + + + + diff --git a/source/Apibim.Revit.Extensions.csproj b/source/Apibim.Revit.Extensions.csproj deleted file mode 100644 index 4743e30..0000000 --- a/source/Apibim.Revit.Extensions.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Apibim.Revit.Extensions - Apibim.Revit.Extensions - $(RevitVersion).0.1 - - - Apibim.Revit.Extensions - Apibim - Apibim.com - Extension methods for Autodesk Revit API - https://github.com/apibim/Revit.Extensions - MIT - false - - -