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?, mat4d_t, mat4d_t, bool, bool, bool)

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, mat4d_t ProgramZeroToGeomMat4d, mat4d_t GeomToProgramZeroMat4d, bool ToolTipUnreachable = false, bool ProgramZeroUnreachable = false, bool CutterLocationNotFinite = false)

Parameters

GeomCl dvec3d_t?

The geometric CL point; 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, 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.

ProgramZeroToGeomMat4d mat4d_t

The workpiece's program-zero anchor to its geometry anchor through its topology, read once per workpiece. The run gate guarantees the chain; the no-step snapshot (Seq null) carries Idt as a placeholder that nothing reads.

GeomToProgramZeroMat4d mat4d_t

The inverse leg: geometry anchor to program-zero anchor; the same placeholder rule as ProgramZeroToGeomMat4d.

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).

Properties

AmbientTemperature_K

Ambient temperature in Kelvin.

public double AmbientTemperature_K { get; init; }

Property Value

double

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; 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?

GeomToProgramZeroMat4d

The inverse leg: geometry anchor to program-zero anchor; the same placeholder rule as ProgramZeroToGeomMat4d.

public mat4d_t GeomToProgramZeroMat4d { get; init; }

Property Value

mat4d_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, 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?

ProgramZeroToGeomMat4d

The workpiece's program-zero anchor to its geometry anchor through its topology, read once per workpiece. The run gate guarantees the chain; the no-step snapshot (Seq null) carries Idt as a placeholder that nothing reads.

public mat4d_t ProgramZeroToGeomMat4d { get; init; }

Property Value

mat4d_t

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