SolidCoreNet 1.0.2
dotnet add package SolidCoreNet --version 1.0.2
NuGet\Install-Package SolidCoreNet -Version 1.0.2
<PackageReference Include="SolidCoreNet" Version="1.0.2" />
<PackageVersion Include="SolidCoreNet" Version="1.0.2" />
<PackageReference Include="SolidCoreNet" />
paket add SolidCoreNet --version 1.0.2
#r "nuget: SolidCoreNet, 1.0.2"
#:package SolidCoreNet@1.0.2
#addin nuget:?package=SolidCoreNet&version=1.0.2
#tool nuget:?package=SolidCoreNet&version=1.0.2
SolidCoreNet
A C# library for solid B-rep modeling and meshing, built on the
solidcore kernel (itself a Rust port of the
SMLib kernel from NVIDIA's USD-brep).
Goal
SolidCoreNet is not a wrapper of all of solidcore/SMLib. It wraps the subset needed to construct, query and mesh solid models — B-rep/surface/curve creation and modification, analysis (mass properties, bounding boxes, closest points, intersections), booleans, curve offsetting, and tessellation — behind an idiomatic, object-oriented C# API. The rest of the kernel is deliberately left unwrapped.
This repository holds both halves of the binding:
solidcore-ffi— the native Rust crate: a C ABI over solidcore.SolidCoreNet— a class library targeting net8.0 and net48.
Scope
In scope
- Creation — B-rep, surface and curve primitives, sweeps and profiles (
primitive,prism,profile,sweep). - Modification & analysis — topology (
topology), curve/surface evaluation, editing and offsetting (curve,surface), queries (query), mass properties (mass), intersections (intersect). - Booleans — union, difference, intersection and merge (
boolean); the per-operationboolean_union/boolean_difference/boolean_intersectionare redundant sugar overbooleanand are exposed as OO overloads instead of being wrapped separately. - Meshing — B-rep / surface tessellation (
solidcore-tess). - Healing — stitching and repair to make valid solids (
heal). - Kernel — kernel construction and options (
kernel).
Out of scope
- Blending, filleting, chamfering (
blend). - Offsets and shells (
offset). - NURBS modeling — low-level knot/control-point surgery (
nurbs). - Implicit surfaces (
surface::implicit). - Ray tracing / point picking (
intersect::ray_tracer,topology::shell::ray_fire). - I/O and databases (
io,fs,topology::part_file,topology::database_io,topology::geometry_write,topology::api_files,topology::brep_data_write). - The "cooked" evaluation geometry (
eval). - Internal utilities (
geom,math,limits, and the std re-exports). - Rust-internal plumbing — the
errorconstructors and the setters / notifiers / cache / status /_mutvariants that touch kernel state directly. The managed layer raisesSolidCoreExceptioninstead of porting them.
The authoritative namespace lists live in scripts/scope.json and are
mirrored in api-conversion-status.md. Every endorsed function in
apis.md is tagged W (wrapped), P (pending, in scope), O (out of
scope) or R (redundant sugar over a wrapped function) against them.
Supported platforms and frameworks
| Framework | Windows (x64) | Linux (x64) |
|---|---|---|
| net8.0 | ✅ | ✅ |
| net48 (.NET Framework 4.8) | ✅ | — |
The NuGet package ships native
binaries for win-x64 (solidcore_ffi.dll) and linux-x64 (libsolidcore_ffi.so,
glibc 2.17 baseline);
Tested combinations: net8.0 on Windows, net48 on Windows, and net8.0 on Linux (Ubuntu via WSL).
Building
Native — build
Build the native libraries (solidcore_ffi.dll on Windows, libsolidcore_ffi.so on
Linux):
./build-native.ps1 # Windows: builds the .dll and cross-compiles the Linux .so
./build-native.sh # Linux/macOS: builds the .so
build-native.ps1 will cross compile for Windows/Linux on windows. It checks for cargo-zigbuild, zig, and the Rust
x86_64-unknown-linux-gnu target, and prints an install command for anything that is missing. The Linux .so targets a glibc 2.17 baseline.
Native — test
cd solidcore-ffi
cargo test
Managed — build
dotnet build SolidCoreNet.slnx
Managed — test
dotnet test
NuGet package
dotnet pack SolidCoreNet/SolidCoreNet.csproj -c Release -o artifacts/packages
API
using Kernel kernel = new();
using Brep a = kernel.MakeBox(0, 0, 0, 2, 2, 2);
using Brep b = kernel.MakeBox(1, 1, 1, 2, 2, 2);
using Brep cut = a.Difference(kernel, b); // Consumes a and b
double volume = cut.GetVolume(kernel); // 7 for the 2x2x2 cubes offset by (1,1,1)
Mesh mesh = box.CreateMesh(kernel, MeshTolerance.Chord(1.0), MeshAttributes.All);
| Product | Versions 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. |
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- System.Memory (>= 4.6.3)
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.