GeometryHelper.TeklaConvert
4.0.0
GeometryHelper.TeklaConvert.2026
Additional Detailsnew supported tekla structures 2020, 2025 and 2026.
dotnet add package GeometryHelper.TeklaConvert --version 4.0.0
NuGet\Install-Package GeometryHelper.TeklaConvert -Version 4.0.0
<PackageReference Include="GeometryHelper.TeklaConvert" Version="4.0.0" />
<PackageVersion Include="GeometryHelper.TeklaConvert" Version="4.0.0" />
<PackageReference Include="GeometryHelper.TeklaConvert" />
paket add GeometryHelper.TeklaConvert --version 4.0.0
#r "nuget: GeometryHelper.TeklaConvert, 4.0.0"
#:package GeometryHelper.TeklaConvert@4.0.0
#addin nuget:?package=GeometryHelper.TeklaConvert&version=4.0.0
#tool nuget:?package=GeometryHelper.TeklaConvert&version=4.0.0
GeometryHelper.TeklaConvert
Converts geometry between Tekla Structures and GeometryHelper, both ways: points, vectors, line segments, geometric planes, coordinate systems, bounding boxes, transformation matrices, and the faces and loops of a Tekla solid.
Installation
dotnet add package GeometryHelper.TeklaConvert
You must add two Tekla assemblies yourself
This package does not contain Tekla.Structures.dll or Tekla.Structures.Drawing.dll. They are
Trimble's to distribute rather than ours, so the package ships only its own code and leaves those two
references to you. Until you add them, code that touches this library fails to compile with CS0012:
the type is defined in an assembly that is not referenced.
Take them from either source:
From your Tekla Structures installation — the usual choice, because it guarantees you build against the same version you run:
<Reference Include="Tekla.Structures">
<HintPath>C:\Program Files\Tekla Structures\2026.0\bin\Tekla.Structures.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Tekla.Structures.Drawing">
<HintPath>C:\Program Files\Tekla Structures\2026.0\bin\Tekla.Structures.Drawing.dll</HintPath>
<Private>False</Private>
</Reference>
Or from Trimble's own packages on nuget.org (published from 2024 onward):
dotnet add package Tekla.Structures
dotnet add package Tekla.Structures.Drawing
Keep Private/Copy Local false. Tekla loads those assemblies from its own installation at run time,
and a copy sitting next to your plugin risks loading a build that does not match the running Tekla.
Which Tekla version
The package is built against the 2020 API, so its assembly references carry
Tekla.Structures, Version=2020.0.0.0.
- A console application or any process you own resolves that through a binding redirect, which
AutoGenerateBindingRedirectswrites for you, so a newer Tekla works without a rebuild. - A plugin loaded inside
TeklaStructures.execannot: you do not own that process's config. Build this project from source against the Tekla version you target.
The API surface it uses — Point, Vector, LineSegment, Matrix, GeometricPlane,
CoordinateSystem, AABB, Solid, Face, Loop — is unchanged from 2020 through 2026, so a rebuild
against a newer Tekla needs no source changes.
Usage
using GeometryHelper.CommonGeometry;
using GeometryHelper.SolidGeometry.Geometry;
using GeometryHelper.TeklaConvert;
using TSG = Tekla.Structures.Geometry3d;
var tolerance = new Tolerance(1E-2, 1E-4);
// Tekla to GeometryHelper
GeoPoint3 point = new TSG.Point(1000, 2000, 3000).ToGeoPoint3();
GeoLine3 line = segment.ToGeoLine3();
if (teklaSolid.TryToGeoSolid3(out GeoSolid3 body, tolerance))
{
double volume = body.Volume;
body.TrySubtract(otherBody, out GeoSolid3 remainder);
}
// GeometryHelper back to Tekla
TSG.Point back = point.ToTeklaPoint();
TSG.Matrix matrix = transform.ToTeklaMatrix();
What is checked rather than trusted
Tekla hands back what its modeller happens to hold; GeometryHelper.SolidGeometry asks for flatness, a
closed boundary, and normals that point out of the body. The conversions do that checking, because a
body that only looks right measures wrong later and says nothing about why.
- A coordinate system whose Y axis is not quite square to its X axis is squared up.
- Each face is turned to agree with the normal Tekla gives it, and the finished body is turned inside out if its signed volume says the whole surface arrived reversed. Without that, volume still measures the same but every containment query answers backwards.
- A face that cannot be made sense of is skipped rather than thrown on, which leaves the body no longer
closed — so ask
IsClosed()before trusting a volume.
Tekla models in millimetres with coordinates that can run to hundreds of thousands, and a face of a
twelve metre member is rarely flat to the last decimal. The default EqualPlanar is often too tight for
that, so pass a Tolerance suited to the model rather than relying on the default.
Licence
MIT. The Tekla Structures assemblies this library compiles against are covered by Trimble's own licence terms, not by this one.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- GeometryHelper.PlaneGeometry (>= 4.0.0)
- GeometryHelper.SolidGeometry (>= 4.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.
| Version | Downloads | Last Updated |
|---|
Converts geometry between Tekla Structures and GeometryHelper, both ways: points, vectors, line
segments, geometric planes, coordinate systems, bounding boxes, transformation matrices, and the
faces and loops of a Tekla solid.
REQUIRES TWO ASSEMBLIES YOU MUST SUPPLY
- Tekla.Structures.dll and Tekla.Structures.Drawing.dll are not redistributed here, because they
are Trimble's to ship rather than ours. Reference them yourself, either from the bin folder of
your Tekla Structures installation or from Trimble's own Tekla.Structures and
Tekla.Structures.Drawing packages on nuget.org. Without them the compiler reports CS0012.
- This package is built against the 2020 API. The types it touches - Point, Vector, LineSegment,
Matrix, GeometricPlane, CoordinateSystem, AABB, Solid, Face and Loop - are unchanged through
2026, so a rebuild against a newer Tekla needs no source changes.
READING A SOLID
- Faces are turned to agree with the normal Tekla gives them, and the body is turned inside out
if its signed volume says the whole surface arrived reversed. A coordinate system whose Y axis
is not quite square to its X axis is squared up rather than trusted.
- A face that cannot be made sense of is skipped rather than thrown on, which leaves the body no
longer closed, so ask IsClosed() before trusting a volume.
- Tekla models in millimetres with coordinates running to hundreds of thousands, where the
default EqualPlanar is often too tight. Pass a Tolerance suited to the model.