![]() |
VOOZH | about |
dotnet add package Xbim.WexBlazor --version 1.7.2
NuGet\Install-Package Xbim.WexBlazor -Version 1.7.2
<PackageReference Include="Xbim.WexBlazor" Version="1.7.2" />
<PackageVersion Include="Xbim.WexBlazor" Version="1.7.2" />Directory.Packages.props
<PackageReference Include="Xbim.WexBlazor" />Project file
paket add Xbim.WexBlazor --version 1.7.2
#r "nuget: Xbim.WexBlazor, 1.7.2"
#:package Xbim.WexBlazor@1.7.2
#addin nuget:?package=Xbim.WexBlazor&version=1.7.2Install as a Cake Addin
#tool nuget:?package=Xbim.WexBlazor&version=1.7.2Install as a Cake Tool
A Blazor component library for building BIM (Building Information Modeling) applications. Wraps the @xbim/viewer JavaScript library for 3D model visualization in Blazor WebAssembly or Server applications.
This library supports two modes to fit different application needs:
| Mode | Description | Best For |
|---|---|---|
| Standalone | Self-contained viewer with no backend dependencies | SPAs, embedded viewers, prototypes |
| Platform | Integrated with Xbim WexServer for full model management | Server apps, team collaboration, cloud storage |
# Add GitHub Packages source (one-time setup)
dotnet add package Xbim.WexBlazor
For platform mode, also install the API client:
dotnet add package Xbim.WexServer.Client
Register services for standalone operation (no server required):
// Program.cs
builder.Services.AddWexBlazorStandalone();
Add to _Imports.razor:
@using Xbim.WexBlazor
@using Xbim.WexBlazor.Components
Basic viewer:
<XbimViewer Id="viewer"
Width="800"
Height="600"
ModelUrl="models/building.wexbim"
OnModelLoaded="HandleModelLoaded" />
@code {
private void HandleModelLoaded(bool success)
{
Console.WriteLine(success ? "Model loaded" : "Load failed");
}
}
Register services with a WexServer connection:
// Program.cs
builder.Services.AddWexServerClient(options =>
{
options.BaseUrl = "https://your-Xbim-server.com";
});
builder.Services.AddWexBlazorPlatform();
Platform mode enables:
The main viewer component with full model interaction support.
<XbimViewer Id="myViewer"
Width="100%"
Height="600"
BackgroundColor="#F5F5F5"
ModelUrl="models/SampleModel.wexbim"
OnViewerInitialized="HandleInit"
OnModelLoaded="HandleLoad"
OnPick="HandlePick">
</XbimViewer>
Parameters:
Id - Unique viewer identifierWidth/Height - Dimensions (px or %)BackgroundColor - Canvas backgroundModelUrl - Initial model URL to loadEvents:
OnViewerInitialized - Viewer readyOnModelLoaded - Model load completeOnPick - Element selectedOnHoverPick - Element hoveredBuilt-in toolbar with common viewer operations.
<XbimViewer ...>
<ViewerToolbar Position="ToolbarPosition.Top"
ShowResetView="true"
ShowZoomControls="true"
ShowNavigationModes="true" />
</XbimViewer>
Dockable sidebar system with icon-based panel management.
<XbimViewer ...>
<ViewerSidebar Position="SidebarPosition.Right" DefaultMode="SidebarMode.Docked">
<SidebarPanel Title="Properties" Icon="bi-info-circle">
<PropertiesPanel ShowHeader="false" />
</SidebarPanel>
<SidebarPanel Title="Hierarchy" Icon="bi-diagram-3">
<ModelHierarchyPanel ShowHeader="false" />
</SidebarPanel>
</ViewerSidebar>
</XbimViewer>
Displays element properties when selected. Auto-subscribes to viewer pick events.
<PropertiesPanel ShowHeader="true" />
Shows model structure with Product Types and Spatial Structure tabs.
<ModelHierarchyPanel ShowHeader="true" />
UI for loading models from URLs, files, or demo assets.
<FileLoaderPanel AllowIfcFiles="true" OnFileLoaded="HandleFile" />
Add viewer plugins for enhanced functionality:
<XbimViewer @ref="_viewer" ...>
<NavigationCubePlugin Opacity="0.7" />
<GridPlugin Spacing="1000" Color="#CCCCCC" />
<SectionBoxPlugin />
<ClippingPlanePlugin />
</XbimViewer>
Register and configure the theme service:
// Program.cs
var themeService = new ThemeService();
themeService.SetTheme(ViewerTheme.Dark);
themeService.SetAccentColors(lightColor: "#0969da", darkColor: "#4da3ff");
builder.Services.AddSingleton(themeService);
Toggle theme at runtime:
@inject ThemeService ThemeService
<button @onclick="() => ThemeService.ToggleTheme()">Toggle Theme</button>
The library supports multiple property sources for element data.
var model = IfcStore.Open("model.ifc");
var propertySource = new IfcPropertySource(model, viewerModelId);
propertyService.RegisterSource(propertySource);
var apiSource = new CustomPropertySource(
async (query, ct) =>
{
var data = await api.GetPropertiesAsync(query.ElementId);
return new ElementProperties { /* ... */ };
},
sourceType: "REST API",
name: "API Properties"
);
propertyService.RegisterSource(apiSource);
var dictSource = new DictionaryPropertySource(name: "Custom");
dictSource.AddProperty(elementId: 123, modelId: 0,
groupName: "Status", propertyName: "Approved", value: "Yes");
propertyService.RegisterSource(dictSource);
Direct IFC file loading with automatic wexBIM conversion:
// Program.cs
builder.Services.AddSingleton<IfcModelService>();
builder.Services.AddSingleton<IfcHierarchyService>();
@inject IfcModelService IfcService
var result = await IfcService.ProcessIfcBytesAsync(ifcData, "model.ifc");
if (result.Success)
{
await Viewer.LoadModelFromBytesAsync(result.WexbimData!, "model.ifc");
}
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.7.2 | 170 | 2/23/2026 |
| 1.7.1 | 113 | 2/18/2026 |
| 1.7.0 | 136 | 1/24/2026 |
| 1.6.0 | 128 | 1/23/2026 |
| 1.5.1 | 133 | 1/22/2026 |
| 1.5.0 | 121 | 1/21/2026 |
| 1.4.0 | 120 | 1/20/2026 |
| 1.3.1 | 121 | 1/14/2026 |
| 1.3.0 | 130 | 1/14/2026 |
| 1.2.0 | 124 | 1/13/2026 |
| 1.1.0 | 126 | 1/12/2026 |
| 1.0.5 | 127 | 1/9/2026 |
| 1.0.4 | 130 | 1/9/2026 |
| 1.0.3 | 124 | 1/9/2026 |
| 1.0.2 | 129 | 1/9/2026 |
| 1.0.1 | 126 | 1/9/2026 |
| 1.0.0 | 130 | 1/9/2026 |