Table of Contents

Geometry Objects

IGetStl is the base interface for all geometry objects in HiAPI, providing unified STL support.

Several common geometry types are available:

See Transformations for TransformationGeom.

Note

All coordinate values use standard units (millimeters, radians)

Example Usage

using System;
using System.Collections.Generic;
using Hi.Geom;
using Hi.Mech.Topo;

namespace Sample.Geom;

/// <summary>
/// Demonstrates the creation and manipulation of geometric objects in HiAPI.
/// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files.
/// </summary>
/// <remarks>
/// ### Source Code
/// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)]
/// </remarks>
public static class DemoBuildGeom
{
    /// <summary>
    /// Generates a collection of geometric objects for demonstration purposes.
    /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries.
    /// </summary>
    /// <returns>A list of geometries implementing the IGetStl interface</returns>
    public static List<IGetStl> GenGeoms()
    {
        Box3d box = new Box3d(0, 0, -50, 70, 50, 0);
        Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12),
                                new PairZr(20,16),new PairZr(30,16)]);
        Stl stl = new Stl("geom.stl");
        StlFile stlFile = new StlFile("geom.stl");
        TransformationGeom transformationGeom = new TransformationGeom()
        {
            Transformer = new GeneralTransform(1,
                new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)),
                new StaticTranslation(new Vec3d(0, 0, 0))),
            Geom = stl
        };
        GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom);
        return new List<IGetStl>([box, cylindroid, stl, stlFile, transformationGeom]);
    }
}