Reference for exported types and functions

API docstrings

These types and functions are the exported API by this package.

HoleLocalizationFeature(descriptor::FeatureDescriptor, rough::R, machined::M) where {R<:AbstractHoleGeometry,M<:AbstractHoleGeometry}

A holelike localization feature. The rough and machined geometries don't necessarily have to be the same type.


Supertype of any localization features. A localization feature contains a feature descriptor (FeatureDescriptor) and a rough and machined geometry (AbstractLocalizationGeometry). The two geometries must be of same type (hole, plane, etc.). If a feature doesn't have a rough of machined state, an empty object should be used (and the feature descriptor should also store this information). based on its rough geometry.


MeshHole <: AbstractHoleGeometry

A simple mesh hole geometry, that contains the mesh of the hole's surface and the convex hull of the points (see our paper for details).

MultiOperationProblem(partzeros, holes, planes, tolerances, parameters)

Construct a multi operation problem. For usage, please see the example section in the documentation. The parameters for the optimization are also described there with greater details.


  • partzeros::Vector{PartZero}: array of part zeros.
  • holes::Vector{HoleLocalizationFeature}: array of holes.
  • planes::Vector{PlaneLocalizationFeature}: array of planes.
  • tolerances::Vector{Tolerance}: array of tolerances.
  • parameters::Dict{String,Any}: parameters in the form of a dictionary. Keys include: minAllowance, OptimizeForToleranceCenter, UseTolerances, SetPartZeroPosition, maxPlaneZAllowance.
PartZero(name, position, rotationmatrix)

Define a part zero with name, position and rotationmatrix relative to the workpiece datum.


julia> PartZero("front", [0,0,0], hcat([0,1,0], [0,0,1], [1,0,0]))
Part zero: "front"
[0.0 0.0 1.0 0.0; 1.0 0.0 0.0 0.0; 0.0 1.0 0.0 0.0; 0.0 0.0 0.0 1.0]
PlaneLocalizationFeature(descriptor::FeatureDescriptor, rough::R, machined::M) where {R<:AbstractPlaneGeometry,M<:AbstractPlaneGeometry}

A planelike localization feature. The rough and machined geometries don't necessarily have to be the same type.


SimpleHole <: AbstractHoleGeometry

A simple "hole" structure with a center point and a radius. Axis of the hole is defined by its partzero taken from the feature descriptor.


SimplePlane <: AbstractPlaneGeometry

A simple plane structure with one point. Normal vector of the plane is defined by its partzero taken from the feature descriptor.


Return the radius of a IsPrimitive geometry that is subtype of [AbstractHoleGeometry]. There is a default implementation that can be used: featureradius(::IsPrimitive, x) = x.r.


Return the filtered points of the surface of an IsFreeForm geometry, that may define active constraints in the optimization task (for example convex hull of mesh). Definition signature should look like: filteredsurfacepoints(::IsFreeForm, x).


Tell if mop's solution is in an optimal state, either: OPTIMAL or LOCALLY_SOLVED.

Private functions

These functions and types are not exported, though they can be used if needed.

getfeaturebyname(mop::MultiOperationProblem, featurename)

Get a hole or plane feature by its name. It is assumed that all features have distinct names. Return nothing, if no feature is found with featurename.

getpartzerobyname(partzeros::Vector{PartZero}, partzeroname::AbstractString)

Return the first part zero from partzeros, thats name is partzeroname.