Table of Contents

Namespace Hi.Geom

Classes

ArrayUtil

Utility class for array operations.

AxisAngle4d

Axis(3d) and angle(1d)

Box3d

The axis-aligned box as a geometry kind: what a workpiece, a fixture, a holder, a cutter beam, a transformation geometry or a combination holds beside Cylindroid, StlFile, ExtendedCylinder, TransformationGeom (HiMech) and GeomCombination — the XML element Box3d, the mesh, the presentation DTO and the selection name “Box”. The box itself is the value Box, a box3d_t: every bound, corner, expansion and view is computed there, and this class carries none of that API (a bounding box is new box3d_t(geom) through IExpandToBox3d). Being a class, the object an owner holds is the object a registry key or an editor names, so writing Box through either reaches the owner.

Cylindroid

3d Geometry of Cylindroid.

ExtendedCylinder

An extensible cylinder geometry that generates a corresponding Cylindroid by the start section and the total length.

Flat3d

Represents a 3D plane defined by a unit normal vector and its signed distance from the origin. The plane equation is: Ax + By + Cz + d = 0, where (A,B,C) is the normal vector and d is the distance to origin.

GenStlFuncHost

A class that hosts a function to generate STL geometry at a caller-chosen resolution.

GeomCombination

A class that manages multiple STL sources as a single source. As one source its mesh is every item's triangles concatenated (GenStl(IPolarResolution2d)), which is not a closed mesh where items overlap; as IGenStlBodies it hands its items out one closed body at a time, for a consumer that unites bodies instead of meshing them together (the workpiece's stock build).

GeomUtil

Utility of Geometry.

MathNetUtil

Utility class for MathNet.Numerics operations.

MathUtil

Math Utility.

NativeFraction

Native wrapper for C++ fraction_t<0> (unlimited precision fraction). A fraction consists of a numerator and denominator using unlimited precision integers.

NativeStl

Native Stl. For purpose of efficient swept volume.

ObjUtil

Wavefront OBJ writer for RGB-coloured triangle buffers.

PairZr

Value pair of Z and R.

PairZrUtil

Utility class for working with PairZr objects

PlyUtil

Stanford PLY writer for RGB-coloured triangle buffers.

Polar3d

Represents a point in 3D space using polar coordinates

Segment3d

Represents a 3D line segment defined by two endpoints.

Stl

STL (stereolithography). Composed by Triangles. Provide Stl File R/W.

StlBody

One closed body of a geometry that stands for several: its mesh, and the leaf geometry the mesh came from – a Box3d, a Cylindroid, an StlFile, a mesh itself (Stl) – which names the body (its kind, its file) to whoever reports on it. A body under a transformation is the transformed mesh with the untransformed leaf as its source.

StlFile

Represents an STL file with loading and saving capabilities. The mesh read from the file is kept in CacheStl until ReleaseStlCache() lets it go; after that GetStl() reads it back on every call and keeps nothing — from the file it came from, or from the last copy copy-on-save wrote when that file is gone — and ExpandToBox3d(ref box3d_t) answers from the bounds kept at the load.

StlFuncHost

A class that hosts a function to generate STL geometry.

StlUtil

Utility for Stl.

TransformationGeom

Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results.

Tri3dUtil

Utility of tri3d_t. Include generator of triangles from points.

Vec2i

Basic 2D point (or vector).

Structs

Fraction<TEva>

Pure C# unlimited precision fraction.

box2d_t

Lightweight 2d box: a sequential-layout value type of two vec2d_t fields, the 32-byte mirror of the C++ geom::box2<vec2d>. An orthogonal box whose edges are all parallel with the Cartesian coordinate axes; the data is Min and Max. It has no in-place mutating method: write Min/Max on a variable, or build a new value with Expanded(vec2d_t), Translated(vec2d_t) and the other value-returning members.

box3d_t

Lightweight 3d box: a sequential-layout value type of two vec3d_t fields, the 48-byte mirror of the C++ geom::box3<vec3d_t>. An orthogonal box whose edges are all parallel with the Cartesian coordinate axes; the data is Min and Max. It has no in-place mutating method: write Min/Max on a variable, field or array element (never on a property receiver), or build a new value with Expanded(vec3d_t), Translated(vec3d_t), ScaledFromCenter(double) and GetTransformedBoundingBox(mat4d_t). Bound accumulation goes through ExpandToBox3d(ref box3d_t), which takes the destination by reference. This is the mathematical value only — a bound, a stroke limit, a native mirror. The box as a geometry kind (what a workpiece, a holder or a combination holds, the XML factory kind, the mesh, the editor's object) is the class Box3d, which wraps one of these.

dvec3d_t

Dual vec3d_t with p(vec3d_t) and n(vec3d_t): a sequential-layout value type of two vec3d_t fields, the 48-byte mirror of the C++ geom::dvec3<double>. It has no in-place mutating method: write Point/Normal (or a component through the indexer) on a variable, field or array element, never on a property receiver, or build a new value with the Get* members. A default dvec3d_t is Zero.

mat4d_t

4x4 matrix, column-major in 16 inline doubles: a sequential-layout value type, the mirror of the C++ geom::mat4<double> (128 bytes, T m[16]). It has no in-place mutating method: write an element through m or the this[int, int] indexer on a variable, field or array element (never on a property, which hands out a copy), assign Trans, or build a new matrix with a constructor, GetInverse(), TransposeMat, NoTransMat, GetScaleMat(double) and the other Get* members. new mat4d_t() is the identity matrix; default(mat4d_t) is the zero matrix, as the C++ mat4() is.

mat4d_t.Elements

The 16 elements of a mat4d_t, inline (the C++ T m[16]): indexable, enumerable and convertible to Span<T> / ReadOnlySpan<T> of double.

tri3d_t

Basic 3D triangle: a sequential-layout value type of four vec3d_t fields in the order p0, p1, p2, n, the 96-byte mirror of the C++ geom::tri3<vec3d_t> (so a pinned array of triangles is what core.dll reads as tri3d_t*). It has no in-place mutating method: write an apex through the fields or the indexer on a variable, field or array element (never on a property or a List indexer, which hand out a copy), or build a new value with the Get* members.

vec2d_t

Basic 2D point (or vector): a sequential-layout value type with mutable fields (the mirror of the C++ geom::vec2<double>). It has no in-place mutating method: write a component through x/y, X/Y or the indexer on a variable, field or array element, or build a new value with WithAt(int, double).

vec3d_t

Basic 3D point (or vector): a sequential-layout value type with mutable fields (the mirror of the C++ geom::vec3<double>, 24 bytes). It has no in-place mutating method: write a component through x/y/z, X/Y/Z or the indexer on a variable, field or array element (never on a property, which hands out a copy), or build a new value with WithAt(int, double) and the Get* family.

vec3f_t

Single-precision 3D vector: the 12-byte mirror of the C++ geom::vec3<float> (vec3f_t), what core.dll takes for colours and float coordinates; not merged with vec3d_t (float vs double).

Interfaces

IExpandToBox2d

Object that can be expanded to a box2d_t.

IExpandToBox3d

Object that can be expanded to a box3d_t.

IFlat3d

Interface for a 3D plane that provides an anchor point and a normal vector.

IGenStl

Interface for generating STL geometry with a resolution.

IGenStlBodies

A geometry that stands for several closed bodies, each voxelized on its own where one mesh would not do: a GeomCombination whose items overlap concatenates their triangles into one mesh (GenStl(IPolarResolution2d)) that is not closed where they overlap, so the stock build unites the bodies one by one instead (WorkpieceService.GetOrBuildMeshedGeom) and asks for them here. A nested combination, and a combination under a TransformationGeom, flatten through this interface, so the bodies answered are always leaves.

IGeomProperty

Interface for objects that have a geometry property.

IGetStl

Interface for retrieving STL geometry data.

IGetZrContour

Interface for retrieving Z-R contour data for rotational geometries.

IGetZrList

Interface for getting a list of Z-R pairs.

IReleaseStlCache

A mesh source that can let go of the mesh it keeps when GetStl() produces it again: a file-backed mesh read back from its file, a combination rebuilt from its sources, a transformed copy regenerated from the inner geometry. A holder that keeps a reference of its own to the mesh (a Solid's alias) drops it when the call returns true.

IStlSource

Stl provider with xml support.

ITri3d

Interface for 3D triangles.

IVec<T>

Interface for vector types with generic element type.

IZrListSourceProperty

Provides a source for obtaining an IGetZrList.

Enums

Dir

Enumeration of coordinate axis directions in 3D space.

FractionStatus

Status flags for Fraction and NativeFraction. Corresponds to IS_PACKED_MASK and IS_EVALUATED_MASK in C++ fraction_base_t.

Stl.StlType

Stl file format.

mat4d_t.IndexFlag

Specifies the indexing method for matrix construction from vectors.