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]);
        }
    }

}