Table of Contents

Class MachiningVolumeRemovalProc.StepMotionSnapshot

Namespace
Hi.Machining
Assembly
HiMech.dll

Represents a snapshot of the machining motion state.

public record MachiningVolumeRemovalProc.StepMotionSnapshot : IEquatable<MachiningVolumeRemovalProc.StepMotionSnapshot>
Inheritance
MachiningVolumeRemovalProc.StepMotionSnapshot
Implements
Inherited Members
Extension Methods

Constructors

StepMotionSnapshot(dvec3d_t?, dvec3d_t?, SeqPair<mat4d_t>, double[], bool, IMachiningTool, WorkpieceService, double, CoolantHeatCondition, SortedList<double, double>, dvec3d_t?, ProgramZeroLegs, bool, bool, bool, mat4d_t?)

Represents a snapshot of the machining motion state.

public StepMotionSnapshot(dvec3d_t? GeomCl, dvec3d_t? ProgramCl, SeqPair<mat4d_t> Seq, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double AmbientTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList<double, double> FluteZToDzList, dvec3d_t? PreTipPose, ProgramZeroLegs ProgramZeroLegs, bool ToolTipUnreachable = false, bool ProgramZeroUnreachable = false, bool CutterLocationNotFinite = false, mat4d_t? CdnTransformWorkpieceGeomToToolRunning = null)

Parameters

GeomCl dvec3d_t?

The geometric CL point – the programmed location (under the deflection transformation the deflected pose is the pair's cur, Seq); null when no tool tip is mounted, when the mounted tip is not reachable from the workpiece geometry anchor, when the workpiece has no program zero to place it on, or when the cutter location is not finite (no step any of these ways; see ToolTipUnreachable, ProgramZeroUnreachable and CutterLocationNotFinite).

ProgramCl dvec3d_t?

The program CL point; null when GeomCl is null.

Seq SeqPair<mat4d_t>

The sequence pair of transformation matrices.

McValues double[]

Array of machine values.

EnableSweeping bool

Whether sweeping is enabled.

MachiningTool IMachiningTool

The machining tool being used.

WorkpieceService WorkpieceService

Service that owns the workpiece being machined.

AmbientTemperature_K double

Ambient temperature in Kelvin.

CoolantHeatCondition CoolantHeatCondition

The coolant heat condition.

FluteZToDzList SortedList<double, double>

Sorted list mapping flute Z positions to their deltas.

PreTipPose dvec3d_t?

The tip pose the previous StepMotion(bool, double, mat4d_t?) call fed to the valve (the programmed one; a deflection transform does not move it), on the workpiece-geometry coordinate – whether or not that call produced a step (the valve skips a collinear return over a segment it already covered). Null on the first call after a reset, and on the first finite location after one that was not finite (CutterLocationNotFinite). The one-step reference for the real tip feedrate; Seq.pre is not, it may span two steps back.

ProgramZeroLegs ProgramZeroLegs

The workpiece's two program-zero legs – program-zero anchor to geometry anchor through its topology, and the inverse – in the one immutable holder read once per workpiece instance (and again after the step cache is cleared) and shared by every step built on it; the step keeps the reference (ProgramZeroLegs). The run gate guarantees the chain; the no-step snapshot (Seq null) carries Identity as a placeholder that nothing reads.

ToolTipUnreachable bool

True when a tool is mounted but no branch chain connects its tip to the workpiece geometry anchor – no machining chain at all, or a chain missing its spindle or table leg – so the snapshot is the no-step one (Seq null) exactly as with no tool. The caller reports it once per chain assignment (MachiningActRunner.ReportToolTipUnreachable); false in every other snapshot, including the one where the workpiece's own geometry role is unbound (that is ProgramZeroUnreachable: the workpiece's roles, not the chain).

ProgramZeroUnreachable bool

True when a tool is mounted and the workpiece's geometry anchor does not reach its program-zero anchor through the workpiece's own branches (either role unbound, or the branch between them detached), so the CL cannot be placed in program-zero coordinates and the snapshot is the no-step one (Seq null) exactly as with no tool. The chain is re-read on every such step, so binding the role or attaching the branch on the same workpiece heals on the next step. The caller reports it once per workpiece (MachiningActRunner.ReportProgramZeroUnreachable); false in every other snapshot, including the one ToolTipUnreachable marks (no CL, so the question does not arise).

CutterLocationNotFinite bool

True when the tool tip is on the chain and the workpiece has its program zero, but the cutter location that comes out of the chain is not finite (a NaN axis value turns the whole tip matrix NaN through 0 * NaN): nothing can be swept from it, so the snapshot is the no-step one (Seq null, GeomCl null). The valve is not fed – its window still holds the last finite pose, which the next finite location pairs with – and the feed reference (PreTipPose) is dropped, so that next step's real tip feedrate falls back to the commanded one. The caller reports it once per run of such locations (MachiningActRunner.ReportCutterLocationNotFinite).

CdnTransformWorkpieceGeomToToolRunning mat4d_t?

The step's frame from the workpiece geometry coordinate to the tool running coordinate (CdnTransformWorkpieceGeomToToolRunning), built once by the native step procedure from Seq – the first of the step's derived values, Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.Derived's frame – and handed down the step pipeline (the subtraction task's SubstractionResult.Derived); null when Seq is null. The step keeps no memo of it.

Properties

AmbientTemperature_K

Ambient temperature in Kelvin.

public double AmbientTemperature_K { get; init; }

Property Value

double

CdnTransformWorkpieceGeomToToolRunning

The step's frame from the workpiece geometry coordinate to the tool running coordinate (CdnTransformWorkpieceGeomToToolRunning), built once by the native step procedure from Seq – the first of the step's derived values, Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.Derived's frame – and handed down the step pipeline (the subtraction task's SubstractionResult.Derived); null when Seq is null. The step keeps no memo of it.

public mat4d_t? CdnTransformWorkpieceGeomToToolRunning { get; init; }

Property Value

mat4d_t?

CoolantHeatCondition

The coolant heat condition.

public CoolantHeatCondition CoolantHeatCondition { get; init; }

Property Value

CoolantHeatCondition

CutterLocationNotFinite

True when the tool tip is on the chain and the workpiece has its program zero, but the cutter location that comes out of the chain is not finite (a NaN axis value turns the whole tip matrix NaN through 0 * NaN): nothing can be swept from it, so the snapshot is the no-step one (Seq null, GeomCl null). The valve is not fed – its window still holds the last finite pose, which the next finite location pairs with – and the feed reference (PreTipPose) is dropped, so that next step's real tip feedrate falls back to the commanded one. The caller reports it once per run of such locations (MachiningActRunner.ReportCutterLocationNotFinite).

public bool CutterLocationNotFinite { get; init; }

Property Value

bool

EnableSweeping

Whether sweeping is enabled.

public bool EnableSweeping { get; init; }

Property Value

bool

FluteZToDzList

Sorted list mapping flute Z positions to their deltas.

public SortedList<double, double> FluteZToDzList { get; init; }

Property Value

SortedList<double, double>

GeomCl

The geometric CL point – the programmed location (under the deflection transformation the deflected pose is the pair's cur, Seq); null when no tool tip is mounted, when the mounted tip is not reachable from the workpiece geometry anchor, when the workpiece has no program zero to place it on, or when the cutter location is not finite (no step any of these ways; see ToolTipUnreachable, ProgramZeroUnreachable and CutterLocationNotFinite).

public dvec3d_t? GeomCl { get; init; }

Property Value

dvec3d_t?

MachiningTool

The machining tool being used.

public IMachiningTool MachiningTool { get; init; }

Property Value

IMachiningTool

McValues

Array of machine values.

public double[] McValues { get; init; }

Property Value

double[]

PreTipPose

The tip pose the previous StepMotion(bool, double, mat4d_t?) call fed to the valve (the programmed one; a deflection transform does not move it), on the workpiece-geometry coordinate – whether or not that call produced a step (the valve skips a collinear return over a segment it already covered). Null on the first call after a reset, and on the first finite location after one that was not finite (CutterLocationNotFinite). The one-step reference for the real tip feedrate; Seq.pre is not, it may span two steps back.

public dvec3d_t? PreTipPose { get; init; }

Property Value

dvec3d_t?

ProgramCl

The program CL point; null when GeomCl is null.

public dvec3d_t? ProgramCl { get; init; }

Property Value

dvec3d_t?

ProgramZeroLegs

The workpiece's two program-zero legs – program-zero anchor to geometry anchor through its topology, and the inverse – in the one immutable holder read once per workpiece instance (and again after the step cache is cleared) and shared by every step built on it; the step keeps the reference (ProgramZeroLegs). The run gate guarantees the chain; the no-step snapshot (Seq null) carries Identity as a placeholder that nothing reads.

public ProgramZeroLegs ProgramZeroLegs { get; init; }

Property Value

ProgramZeroLegs

ProgramZeroLegsIndex

The index of ProgramZeroLegs in the shell's holder table (Hi.Machining.MachiningVolumeRemovalProc.ProgramZeroLegsTable), as the record names it; -1 before the first refresh.

public int ProgramZeroLegsIndex { get; init; }

Property Value

int

ProgramZeroUnreachable

True when a tool is mounted and the workpiece's geometry anchor does not reach its program-zero anchor through the workpiece's own branches (either role unbound, or the branch between them detached), so the CL cannot be placed in program-zero coordinates and the snapshot is the no-step one (Seq null) exactly as with no tool. The chain is re-read on every such step, so binding the role or attaching the branch on the same workpiece heals on the next step. The caller reports it once per workpiece (MachiningActRunner.ReportProgramZeroUnreachable); false in every other snapshot, including the one ToolTipUnreachable marks (no CL, so the question does not arise).

public bool ProgramZeroUnreachable { get; init; }

Property Value

bool

Seq

The sequence pair of transformation matrices.

public SeqPair<mat4d_t> Seq { get; init; }

Property Value

SeqPair<mat4d_t>

ToolTipUnreachable

True when a tool is mounted but no branch chain connects its tip to the workpiece geometry anchor – no machining chain at all, or a chain missing its spindle or table leg – so the snapshot is the no-step one (Seq null) exactly as with no tool. The caller reports it once per chain assignment (MachiningActRunner.ReportToolTipUnreachable); false in every other snapshot, including the one where the workpiece's own geometry role is unbound (that is ProgramZeroUnreachable: the workpiece's roles, not the chain).

public bool ToolTipUnreachable { get; init; }

Property Value

bool

Workpiece

The workpiece data model.

public Workpiece Workpiece { get; }

Property Value

Workpiece

WorkpieceService

Service that owns the workpiece being machined.

public WorkpieceService WorkpieceService { get; init; }

Property Value

WorkpieceService