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.

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.

StlFile

Represents an STL file with loading and saving capabilities

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.

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.

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.