Class MachiningStep
- Namespace
- Hi.MachiningSteps
- Assembly
- HiMech.dll
Represents a machining step enriched with physics, mapping and source metadata. The duration-based step property is based on the duration from previous-step to current-step.
public class MachiningStep : IGetIndexedFileLine, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority, ISentenceCarrier, IGetSentence, ISentenceIndexed, IMotionStepIndex
- Inheritance
-
MachiningStep
- Implements
- Inherited Members
- Extension Methods
Constructors
MachiningStep(IMachiningService, int, ISentenceCarrier, MachineMotionStep, in SubstractionBrief, CollidedKeyPair[])
Initializes a new instance of the MachiningStep class.
public MachiningStep(IMachiningService host, int stepIndex, ISentenceCarrier sourceCommand, MachineMotionStep machineMotionStep, in SubstractionBrief substractionBrief, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
Parameters
hostIMachiningServiceThe host of the milling step.
stepIndexintThe index of the step.
sourceCommandISentenceCarrierThe source command.
machineMotionStepMachineMotionStepThe machine motion step parameters.
substractionBriefSubstractionBriefThe step's removal scalars as the parallel physics stage built them (SubstractionBrief); None for a step built outside the pipeline.
collidedKeyPairsCollidedKeyPair[]The collided key pairs detected in this step.
Properties
AccumulatedCraterWear_um
Gets the accumulated crater wear in micrometers: the wear of the tool now mounted, which starts from zero at each tool change.
[Present("Accumulated Crater Wear", "A.C.Wear", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double AccumulatedCraterWear_um { get; }
Property Value
AccumulatedFlankWearDepth_um
Gets the accumulated flank wear depth in micrometers: the wear of the tool now mounted, which starts from zero at each tool change.
[Present("Accumulated Flank Wear Depth", "A.F.Wear.Depth", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double AccumulatedFlankWearDepth_um { get; }
Property Value
AccumulatedFlankWearWidth_um
Gets the accumulated flank wear width in micrometers: the wear of the tool now mounted, which starts from zero at each tool change.
[Present("Accumulated Flank Wear Width", "A.F.Wear.Width", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double AccumulatedFlankWearWidth_um { get; }
Property Value
AccumulatedSpindleEnergyConsumption_kWh
Gets the accumulated spindle energy consumption in kilowatt-hours: the input energy of the cutting steps. The dry-run energy is not in it; AccumulatedSpindleMeterEnergy_kWh includes it. The sum is taken as the program plays, so after an edit of the spindle capability it keeps the played values until the step physics are recomputed or the program is played again.
[Present("Accumulated Spindle Energy Consumption", null, PhysicsUnit.kWh, "G6")]
[JsAce(ClassExt = "MachiningStep")]
public double AccumulatedSpindleEnergyConsumption_kWh { get; }
Property Value
AccumulatedSpindleMeterEnergy_kWh
Accumulated spindle meter energy in kilowatt-hours: the sum of SpindleMeterPower_W times the step duration over the steps played so far, the dry-run energy in air included. The sum is taken as the program plays, so after an edit of the spindle capability it keeps the played values until the step physics are recomputed or the program is played again.
[Present("Accumulated Spindle Meter Energy", null, PhysicsUnit.kWh, "G6")]
public double AccumulatedSpindleMeterEnergy_kWh { get; }
Property Value
Remarks
A step whose meter power is NaN adds nothing.
AccumulatedTime
Legacy alias for EndTimecode. The value is a
TimeSpan timecode (position from run start), so the
canonical member carries the Timecode suffix and owns the
[Present] / [JsAce] surface; this stays only as a
source-compatible delegate.
[Obsolete("Renamed to EndTimecode.")]
public TimeSpan AccumulatedTime { get; }
Property Value
ActualDateTime
Absolute controller timestamp (wall-clock DateTime) of the
step, preserved alongside ActualTimecode so the calendar
date survives. Resolved to a timecode against the project mapping anchor
(TimeMapping.MappingAnchorDateTime). null when the source row had
no actual time. View onto ActualTime.
[Present("Actual DateTime", "Act.DT", PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public DateTime? ActualDateTime { get; }
Property Value
ActualTime
Wall-clock stamp of the step end (the controller-recorded timeline), or null when the scene has no measured time source (pure NC simulation). Dense on CSV plays: original controller stamps plus machine-timeline extrapolation marked by IsInterpolated.
public StepActualTime ActualTime { get; set; }
Property Value
ActualTimecode
Actual accumulated worked time. End Actual Timecode. Actual Program time. View onto ActualTime.
[Present("Actual Time", "Act.Time", PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public TimeSpan? ActualTimecode { get; }
Property Value
ActualTipFeedrate_mmdmin
The equipped tool's real tip feedrate over the step in mm/min (ActualTipFeedrate_mmds): the tip's displacement relative to the workpiece over the step duration. Equal to Feedrate_mmdmin unless the controller's CL point and the equipped tool's tip decouple (RTCP with a tool-length offset that does not describe the equipped tool).
[Present("Actual Tip Feedrate", "F-tip", PhysicsUnit.mmdmin, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double ActualTipFeedrate_mmdmin { get; }
Property Value
AvgAbsMomentAboutSensorVec3d_Nm
Gets the average absolute moment about sensor vector in Newton-meters. Null when no physics brief exists for the step or its force extension was not built.
[Present("Avg Abs Moment To Tool About Sensor", "Avg-Abs-M-ToTool-Sensor-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? AvgAbsMomentAboutSensorVec3d_Nm { get; }
Property Value
AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm
Gets the average absolute moment X about sensor on spindle rotation coordinate in Newton-meters
[Present("Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate", "AvgAbsMx-ToTool-Sensor-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; }
Property Value
AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm
Gets the average absolute moment X about tool tip on spindle rotation coordinate in Newton-meters
[Present("Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate", "AvgAbsMx-ToTool-Tip-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; }
Property Value
AvgAbsTorqueByMapping_Nm
Gets the average absolute torque by mapping in Newton-meters
[Present("Avg Abs Torque By Mapping", "AvgAbsTorque-Map", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgAbsTorqueByMapping_Nm { get; }
Property Value
AvgAbsTorqueErrorRatioWithMapping
numerator is sim value minus mapping value; denominator is the mapping value.
[Present("Avg Torque Error Ratio by Mapping", "Torque-Err-R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgAbsTorqueErrorRatioWithMapping { get; }
Property Value
AvgAbsTorqueSignedErrorRelationWithMapping
The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping))
[JsAce(ClassExt = "MachiningStep")]
public double? AvgAbsTorqueSignedErrorRelationWithMapping { get; }
Property Value
AvgAbsTorque_Nm
AvgAbsTorqueOnSpindleRotationCoordinate
[Present("Avg Abs Torque", "AvgAbsTorque", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgAbsTorque_Nm { get; }
Property Value
AvgForceToToolOnToolRunningCoordinate_N
Gets the average force to tool on tool running coordinate in N. Null when no physics brief exists for the step or its force extension was not built.
[Present("AvgForceToToolOnToolRunningCoordinate", "AvgForce-ToTool-TR", PhysicsUnit.N, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? AvgForceToToolOnToolRunningCoordinate_N { get; }
Property Value
AvgForceXToToolOnToolRunningCoordinate_N
Gets the average force X to tool on tool running coordinate in N.
[JsAce(ClassExt = "MachiningStep")]
public double? AvgForceXToToolOnToolRunningCoordinate_N { get; }
Property Value
AvgForceYToToolOnToolRunningCoordinate_N
Gets the average force Y to tool on tool running coordinate in N.
[JsAce(ClassExt = "MachiningStep")]
public double? AvgForceYToToolOnToolRunningCoordinate_N { get; }
Property Value
AvgForceZToToolOnToolRunningCoordinate_N
Gets the average force Z to tool on tool running coordinate in N.
[JsAce(ClassExt = "MachiningStep")]
public double? AvgForceZToToolOnToolRunningCoordinate_N { get; }
Property Value
AvgMomentAboutSensor_Nm
Gets the average moment about sensor in Newton-meters
[Present("Avg Moment To Tool About Sensor", "AvgM-ToTool-Sensor-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentAboutSensor_Nm { get; }
Property Value
AvgMomentAboutToolTipOnProgramCoordinate_Nm
Gets the average moment about tool tip on program coordinate in Newton-meters. Null when no physics brief exists for the step or its force extension was not built.
[Present("Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate", "AvgAbsM-ToTool-Tip-W", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; }
Property Value
AvgMomentAboutToolTipOnToolRunningCoordinate_Nm
Gets the average moment about tool tip on tool running coordinate in Newton-meters. Null when no physics brief exists for the step or its force extension was not built.
[Present("Avg Moment To Tool About Tool Tip On Tool Running Coordinate", "AvgAbsM-ToTool-Tip-TR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; }
Property Value
AvgMomentAboutToolTip_Nm
Gets the average moment about tool tip in Newton-meters
[Present("Avg Moment To Tool About ToolTip", "AvgM-ToTool-Tip-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentAboutToolTip_Nm { get; }
Property Value
AvgMomentXyAboutObservationPoint_Nm
Gets the average moment XY about observation point in Newton-meters
[Present("Avg Moment XY To Tool About Sensor", "AvgM-ToTool-Sensor.XY", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentXyAboutObservationPoint_Nm { get; }
Property Value
AvgMomentXyByMapping_Nm
Gets the average moment XY by mapping in Newton-meters
[Present("Avg Moment XY By Mapping", "AvgM-Map.XY", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentXyByMapping_Nm { get; }
Property Value
AvgMomentXyErrorRatioWithMapping
Gets the average moment XY error ratio with mapping. Numerator is sim value minus mapping value; denominator is the mapping value.
[Present("Avg Moment XY Error Ratio by Mapping", "M-XY-Err-R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentXyErrorRatioWithMapping { get; }
Property Value
AvgMomentXySignedErrorRelationWithMapping
The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping))
[JsAce(ClassExt = "MachiningStep")]
public double? AvgMomentXySignedErrorRelationWithMapping { get; }
Property Value
BeginSpindleAngle_deg
Gets the beginning spindle angle in degrees.
[Present("Beginning Spindle Angle Shift", "Spd. Ang. Shift", PhysicsUnit.deg, "F2")]
[JsAce(ClassExt = "MachiningStep")]
public double BeginSpindleAngle_deg { get; }
Property Value
ChipMass_g
Gets the chip mass in grams: the chip volume times the density of the equipment's current workpiece material, computed on read.
[JsAce(ClassExt = "MachiningStep")]
public double? ChipMass_g { get; }
Property Value
ChipMass_mg
Gets the chip mass in milligrams.
[Present("Chip Mass", null, PhysicsUnit.mg, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ChipMass_mg { get; }
Property Value
ChipTemperature_C
Gets the chip temperature in Celsius
[Present("Chip Temperature", "Chip T.", PhysicsUnit.C, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ChipTemperature_C { get; }
Property Value
ChipThickness_mm
Gets the chip thickness in mm.
[Present("Chip Thickness", null, PhysicsUnit.mm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ChipThickness_mm { get; }
Property Value
ChipThickness_um
Gets the chip thickness in micrometers
public double? ChipThickness_um { get; }
Property Value
ChipVolume_mm3
Gets the chip volume in mm³.
[Present("Chip Volume", null, PhysicsUnit.mm3, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ChipVolume_mm3 { get; }
Property Value
Cl
Gets the cutter location (ProgramCl); null when the step has no motion (no MachineMotionStep).
[Present("Cutter Location", "CL", PhysicsUnit.mm, "F5")]
public dvec3d_t? Cl { get; }
Property Value
CollidedKeyPairs
Gets or sets the collided key pairs if a collision was detected for this step.
public MachiningStep.CollidedKeyPair[] CollidedKeyPairs { get; set; }
Property Value
CollisionText
A formatted text representing collided key pairs, e.g. "(A,B);(C,D)". Returns null when there is no collision.
[Present]
[JsAce(ClassExt = "MachiningStep")]
public string CollisionText { get; }
Property Value
ContinueSpindlePowerRatio
Continuous spindle power ratio: input power / time-unlimited maximum power per the current spindle capability, computed on read.
[Present("Continue Spindle Power Ratio", "Cont.Spd.Pow.R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ContinueSpindlePowerRatio { get; }
Property Value
ContinueSpindleTorqueRatio
Gets the infinite insistent spindle torque ratio: the step's peak axial torque over the torque the current spindle capability sustains indefinitely at the step's speed, computed on read.
[Present("Continue Spindle Torque Ratio", "Cont.Spd.Torque-R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ContinueSpindleTorqueRatio { get; }
Property Value
CutterBodyTemperature_C
Gets the cutter body temperature in Celsius
[Present("Cutter Body Temperature", "Ct. Body T.", PhysicsUnit.C, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? CutterBodyTemperature_C { get; }
Property Value
CutterDermisTemperature_C
Gets the cutter dermis temperature in Celsius
[Present("Cutter Dermis Temperature", "Ct. Dermis T.", PhysicsUnit.C, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? CutterDermisTemperature_C { get; }
Property Value
CuttingDepth_mm
Gets the cutting depth in mm.
[Present("Cutting Depth", "ap", PhysicsUnit.mm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double CuttingDepth_mm { get; }
Property Value
CuttingForceHeightFromToolTip_mm
The height above the tool tip at which this step's cutting force is placed on the cutter beam for the deflection, mm — the centroid of the engaged cutting edge, see CuttingForceHeightFromToolTip_mm; the yielding stress ratio leaves out the beam sections below it. 0 for an untouched step; null for a touched step without physics; NaN for a touched step whose force was not computed from an engagement (its deflection then reads a load at the tip, its ratio leaves no section out).
[Present("Cutting Force Height From Tool Tip", "F.Ht.-Tip", PhysicsUnit.mm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? CuttingForceHeightFromToolTip_mm { get; }
Property Value
CuttingForcesToToolOnToolRunningCoordinate_N
Cutting forces on tool running coordinate. Unit is Newtons. The forced item is tool.
public List<vec3d_t> CuttingForcesToToolOnToolRunningCoordinate_N { get; }
Property Value
CuttingForcesToWorkpieceOnProgramCoordinate_N
Get the cutting forces on program coordinate. Unit is Newtons. The forced item is workpiece.
public List<vec3d_t> CuttingForcesToWorkpieceOnProgramCoordinate_N { get; }
Property Value
CuttingSpeed_mmds
Gets the cutting speed Vc in mm/s: the surface speed on the effective cutting diameter, ω·d/2 with ω the spindle speed in rad/s.
[Present("Cutting Speed", "Vc", PhysicsUnit.mmds, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double? CuttingSpeed_mmds { get; }
Property Value
CuttingWidth_mm
Gets the cutting width in mm.
[Present("Cutting Width", "ae", PhysicsUnit.mm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double CuttingWidth_mm { get; }
Property Value
DeltaTipDeflectionOnToolRunningCoordinate_um
Gets the delta tip deflection on tool running coordinate in micrometers. Zero for an untouched step; null for a touched step without a computed deflection.
[Present("Delta Tip Deflection On Tool Running Coordinate", "Dlt.Df.-Tip-TR", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? DeltaTipDeflectionOnToolRunningCoordinate_um { get; }
Property Value
EndTimecode
Ideal accumulated worked time by simulation. Ideal Program duration.
[Present("Time", null, PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public TimeSpan EndTimecode { get; }
Property Value
FeedPerCycle_mm
The feed per spindle cycle in mm, from the real tip feedrate (ActualTipFeedrate_mmdmin).
[Present("Feed per Cycle", "frc", PhysicsUnit.mm, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double FeedPerCycle_mm { get; }
Property Value
FeedPerTooth_mm
The feed per tooth in mm, from the real tip feedrate (ActualTipFeedrate_mmdmin): the chip load the cut experiences.
[Present("Feed per Tooth", "frt", PhysicsUnit.mm, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double FeedPerTooth_mm { get; }
Property Value
Feedrate_mmdmin
The controller's commanded CL feedrate in mm/min (CommandedClFeedrate_mmds): the F word after G94/G95/G93 conversion, or for a rapid the CL path over the act duration. The key keeps its historical name for the clients that read it.
[Present("Feedrate", "F", PhysicsUnit.mmdmin, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double Feedrate_mmdmin { get; }
Property Value
- double
Feedrate in mm/s
FileNo
Gets the file number.
[Present(IsCategorical = true)]
[JsAce(ClassExt = "MachiningStep")]
public int? FileNo { get; }
Property Value
- int?
FilePath
Gets the file path.
[Present]
[JsAce(ClassExt = "MachiningStep")]
public string FilePath { get; }
Property Value
FlagsText
Gets the flags text.
[Present]
[JsAce(ClassExt = "MachiningStep")]
public string FlagsText { get; }
Property Value
FrictionPower_W
friction power takes by workpiece per cycle. the unit is watt.
[JsAce(ClassExt = "MachiningStep")]
public double? FrictionPower_W { get; }
Property Value
HasMillingForceBrief
Whether the physics ran on this step: the force brief is a no-cut or a computed record, not the null one. Read off the tri-state byte the step keeps (HasMillingForceBrief), not the brief; the readers that ask “did the physics run” — the play-end warnings, the NC optimization's force constraint, the step-physics recompute's classification — ask here.
public bool HasMillingForceBrief { get; }
Property Value
Host
Gets or sets the host of the milling step.
public IMachiningService Host { get; set; }
Property Value
InstantCraterWear_um
Gets the instant crater wear in micrometers
[Present("Instant Crater Wear", "I.C.Wear", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? InstantCraterWear_um { get; }
Property Value
IsActualTimeInterpolated
Whether the wall-clock stamp was extrapolated rather than read directly from a controller row. View onto ActualTime; null when the step has no wall-clock stamp at all.
[Present("Actual Interpolated", "Act.Int", PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public bool? IsActualTimeInterpolated { get; }
Property Value
- bool?
IsRapid
Whether the controller's modal state at this step is a rapid traverse: G00, a Heidenhain
FMAX, a CL RAPID, G28 and the travel to a tool-change position — what
IsRapid carries from the act runner, the state the
last feedrate act left, so the step of the tool change itself (its tooling time) carries the
state in force when it is built: the travel's rapid when the change moves (and always under
HardNc, whose traverse act is emitted even when zero-length), else the state of the block
before it. False for feed motion, for a step without a motion step, and for every step of a
CSV replay, which carries no rapid semantic.
[Present("Is Rapid", null, PhysicsUnit.None, "G")]
public bool IsRapid { get; }
Property Value
IsRapidCut
Whether this step is a rapid traverse that removed stock on a line the play reported as
Play-RapidCut–Detected: the step is rapid (IsRapid), touched the workpiece
(IsTouched) and lies in the step range of a reported line — the same lines the
RapidCutMonitor reports, so the line's total removed volume reached the project's
RapidCutVolumeThreshold_mm3 (default 0: any touch). Read off
the runner's fold (OverloadRunFold); false until the line is
closed and reported (a feed step or another line follows it, or the play ends), false for a step
not held by a runner and for every step of a CSV replay, which carries no rapid semantic. A
changed threshold reaches it with the next play, as it reaches the warning.
[Present("Is Rapid Cut", null, PhysicsUnit.None, "G")]
public bool IsRapidCut { get; }
Property Value
IsReliefFaceCollided
Gets a value indicating whether the relief face is collided.
[Present("Is Relief Face Collided", "Is-Rlf.C.", PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public bool? IsReliefFaceCollided { get; }
Property Value
- bool?
IsTouched
Gets whether the step is touched (IsTouched).
[Present("Is Touched", null, PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public bool IsTouched { get; }
Property Value
this[string]
Gets or sets the value written onto this step under key: a number
(read back as a double whatever numeric type was written, a bool as 1 / 0) or a
string; null when nothing is written under the key. Writing null takes the key back
off the step; a value of another type is not stored, and the host says so once per
key; a NaN is stored and read back as it is. A variable registered with a function is
computed when it is read through the registry, not written here, so the indexer reads
null for it. The value lives on the step's consignment while that is live, on the
runner as the last published step's and in the step cache after, never on the step
itself; a step object the strip no longer holds reads null and writes nothing.
public object this[string key] { get; set; }
Parameters
keystringThe step variable's key.
Property Value
- object
The value written under the key, or null.
LineNo
Gets the line number.
[Present]
[JsAce(ClassExt = "MachiningStep")]
public int? LineNo { get; }
Property Value
- int?
LineText
Gets the block text (may contain multiple lines for multi-line NC blocks).
[Present]
[JsAce(ClassExt = "MachiningStep")]
public string LineText { get; }
Property Value
MachineMotionStep
Gets or sets the machine motion step: the motion record of this step (its poses, MC values, feed, spindle speed, tool).
public MachineMotionStep MachineMotionStep { get; set; }
Property Value
MachiningTool
Gets the machining tool used for this milling step.
public IMachiningTool MachiningTool { get; }
Property Value
MaxAbsForce_N
Max absolute force at the rotation cycle.
[Present("Max Absolute Force", "Max Abs F.", PhysicsUnit.N, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? MaxAbsForce_N { get; }
Property Value
MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm
Gets the maximum bottom edge deflection on tool running coordinate in millimeters It only make sense in end mill. The z value of this factor is re-cut depth.
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm { get; }
Property Value
MaxBottomEdgeDeflectionOnToolRunningCoordinate_um
Gets the maximum bottom edge deflection on tool running coordinate in micrometers.
[Present("Max Bottom Edge Deflection On Tool Running Coordinate", "Df.-Bt.Edge-TR", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? MaxBottomEdgeDeflectionOnToolRunningCoordinate_um { get; }
Property Value
MaxBreakageRatio
The max breakage ratio: the largest known of YieldingStressRatio, MaxSpindleTorqueRatio and MaxSpindlePowerRatio, read off the play's resident channels through StepPhysicsChannelReader and never the step cache. Null when the physics did not run on the step (the null record, on which the three read null) or the step was not published by this runner (no host, no runner, no channel row); NaN while the physics ran and none of the three is known (no spindle capability or no limits at the step's speed, and a NaN yielding stress ratio); 0 on a step the cutter did not touch. An edit made in place on the spindle capability object is read by the three ratios at once and by this one after the reader's cached limits are dropped (the host's environment forward, a step-physics recompute's end, a session's begin); a capability object replaced is read by both at once.
[Present("Max Breakage Ratio", "Max.Breakage-R.", PhysicsUnit.None, "G4")]
public double? MaxBreakageRatio { get; }
Property Value
MaxForceOnToolRunningCoordinate_N
Gets the maximum force on tool running coordinate in N. Null when no physics brief exists for the step or its force extension was not built.
public vec3d_t? MaxForceOnToolRunningCoordinate_N { get; }
Property Value
MaxMomentAboutSensor_Nm
Gets the maximum moment about sensor in Newton-meters
[Present("Max Moment To Tool About Sensor", "MaxM-ToTool-Sensor-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double MaxMomentAboutSensor_Nm { get; }
Property Value
MaxMomentAboutToolTip_Nm
Gets the maximum moment about tool tip in Newton-meters
[Present("Max Moment To Tool About ToolTip", "MaxM-ToTool-Tip-SR", PhysicsUnit.Nm, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double MaxMomentAboutToolTip_Nm { get; }
Property Value
MaxSpindlePowerRatio
Maximum spindle power ratio: input power / instantaneous maximum power per the current spindle capability, computed on read.
[Present("Max Spindle Power Ratio", "Max.Spd.Pow.R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? MaxSpindlePowerRatio { get; }
Property Value
MaxSpindleTorqueRatio
Gets the maximum spindle torque ratio: the step's peak axial torque over the peak torque the current spindle capability sustains at the step's speed, computed on read.
[Present("Max Spindle Torque Ratio", "Max.Spd.Torque-R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? MaxSpindleTorqueRatio { get; }
Property Value
MaxTipDeflectionOnToolRunningCoordinate_mm
Gets the maximum tip deflection on tool running coordinate in millimeters
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? MaxTipDeflectionOnToolRunningCoordinate_mm { get; }
Property Value
MaxTipDeflectionOnToolRunningCoordinate_um
Gets the maximum tip deflection on tool running coordinate in micrometers
[Present("Max Tip Deflection On Tool Running Coordinate", "Max.Df.-Tip-TR", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? MaxTipDeflectionOnToolRunningCoordinate_um { get; }
Property Value
MillingForceBrief
The step's force brief, read from the creation cache or the step cache on every call
(TryGetMillingForceBrief(out MillingForceBrief)): null when the physics did not run on the step
or the step's row is not held. Kept for scripts written against the former
MillingInstance.MillingForceBrief.
[Obsolete("Reads the stored force brief on every call: use TryGetMillingForceBrief.")]
public MillingForceBrief MillingForceBrief { get; }
Property Value
MillingInstance
The former per-step object that carried the removal scalars and the two briefs: its
members are on the step itself now — the removal scalars inline
(SubstractionBrief), the briefs read from the step cache — so a script
written as step.MillingInstance.IsTouched or
step.MillingInstance.MillingForceBrief still compiles and reads the step.
[Obsolete("MillingInstance was folded into MachiningStep: read its members on the step itself.")]
public MachiningStep MillingInstance { get; }
Property Value
MillingPhysicsBrief
Former name of MillingForceBrief, kept so scripts written against it still compile.
[Obsolete("Renamed to MillingForceBrief, which reads the stored force brief on every call; use TryGetMillingForceBrief.")]
public MillingForceBrief MillingPhysicsBrief { get; }
Property Value
MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm
Get Moments About Observation Point On Spindle Rotation Coordinate. Unit is Newtons-meter. The forced item is tool.
public List<vec3d_t> MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm { get; }
Property Value
Remarks
Not cached data. Light computation cost of the vectors transformation.
MoveOnProgramCoordinate
Gets the move on program coordinate.
[Present("Move On Workpiece Program Coordinate", "Move-W", PhysicsUnit.mm, "F4")]
[JsAce(ClassExt = "MachiningStep")]
public vec3d_t? MoveOnProgramCoordinate { get; }
Property Value
MovingLength_mm
Gets the moving length in mm. From previous-step to current-step.
[Present("Move Length", "Move Len.", PhysicsUnit.mm, "F4")]
[JsAce(ClassExt = "MachiningStep")]
public double MovingLength_mm { get; }
Property Value
Mrr_mm3ds
Gets the material removal rate in mm³/s.
[Present("MRR", null, PhysicsUnit.mm3ds, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double Mrr_mm3ds { get; }
Property Value
ProgramSideCusp_um
Gets the program side cusp in micrometers. Side cusp without deformation. The value is count by feed per tooth and the tool radius.
[Present("Program Side Cusp", null, PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double ProgramSideCusp_um { get; }
Property Value
ReCutDepth_um
Gets or sets the recut depth in micrometers. The recut depth cause the cutting mark by the end mill. The recut depth increased by the cutter radius increased.
[Present("Re-Cut Depth on Bottom Edge on Tool Running Coordinate", "Re-Cut Depth", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double ReCutDepth_um { get; }
Property Value
ReliefFaceCollidingVelocity_mmds
Gets the relief face colliding speed.
[Present("Relief Face Colliding Speed", "Rlf.C.Speed", PhysicsUnit.mmds, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ReliefFaceCollidingVelocity_mmds { get; }
Property Value
SentenceIndex
Execution-order ordinal of the NC source block this step came from,
delegated from SourceCommand. This is the source block's
position — distinct from this step's own StepIndex, since one
block can expand into several steps. Returns -1 (the “not in pipeline”
sentinel) when there is no source carrier.
public int SentenceIndex { get; }
Property Value
SeqPhysicsBrief
The step's sequential physics state, read from the creation cache or the step cache on
every call (TryGetSeqPhysicsState(out SeqPhysicsState)): null when the step's row is not held.
Kept under the type's former name (SeqPhysicsBrief, renamed
SeqPhysicsState on 2026-10-27) for scripts written against the
former MillingInstance.SeqPhysicsBrief.
[Obsolete("Renamed: the type is SeqPhysicsState, and this reads the stored state on every call; use TryGetSeqPhysicsState.")]
public SeqPhysicsState SeqPhysicsBrief { get; }
Property Value
SideCuspList_um
Gets the list of side cusps in micrometers.
[JsAce(ClassExt = "MachiningStep")]
public List<double> SideCuspList_um { get; }
Property Value
SourceCommand
Gets or sets the source command — the NC-source carrier that produced this step, exposing both the Sentence (via GetSentence()) and the execution-order SentenceIndex.
public ISentenceCarrier SourceCommand { get; set; }
Property Value
SpindleCyclePeriod_s
Gets the spindle rotation cycle period in seconds.
[Present("Spindle Cycle Period", null, PhysicsUnit.sec, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double SpindleCyclePeriod_s { get; }
Property Value
SpindleInputPower_W
Input spindle power in watts: energy entering the spindle for the cut, the output power divided by the spindle's energy efficiency. The dry-run power of a turning spindle is not in it; SpindleMeterPower_W adds it.
[Present("Spindle Input Power", null, PhysicsUnit.watt, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double SpindleInputPower_W { get; }
Property Value
- double
Input spindle power in Watts.
SpindleMeterPower_W
Spindle meter power in watts: what a spindle load meter reads on this step, the output power plus the spindle's loss, the loss being the larger of the dry-run power and the efficiency loss of the input power (GetMeterPower_W(double, double)). In air it is the dry-run power; a stopped spindle (S0 or M05) draws none. Read from the current spindle capability.
[Present("Spindle Meter Power", null, PhysicsUnit.watt, "G4")]
public double SpindleMeterPower_W { get; }
Property Value
Remarks
NaN without a spindle capability, on a turning step when the capability has no power contour or its longest-duration power contour has no point, or on a step that cuts with a turning spindle but carries no physics result (physics disabled).
SpindleOutputPower_W
Spindle output power in watts (axial power taken by workpiece). Energy at the cutting end after spindle losses; causes workpiece/chip deformation and temperature rise.
[Present("Spindle Output Power", null, PhysicsUnit.watt, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double SpindleOutputPower_W { get; }
Property Value
SpindleOverloadPeakRatio
The peak of the run of spindle overload this step is in: the largest spindle overload ratio (the larger known of MaxSpindleTorqueRatio and MaxSpindlePowerRatio) among the run's steps — so far, for the run still open. 0, NaN and null as SpindleOverloadRevolutions: 0 for a step whose ratio is known and not above 1, NaN while the ratio is unknown, null when the physics did not run or the step is not held.
[Present("Spindle Overload Peak Ratio", "Spd.Overload-Peak-R.", PhysicsUnit.None, "G4")]
public double? SpindleOverloadPeakRatio { get; }
Property Value
SpindleOverloadRevolutions
The spindle revolutions of the run of spindle overload this step is in: the consecutive steps,
this one among them, whose spindle overload ratio — the larger known of
MaxSpindleTorqueRatio and MaxSpindlePowerRatio — is above 1, folded by
the runner over the built steps (OverloadRunFold, step coloring
p08) and read off its run table, never the step cache. Every step of a closed run reads the run's
total (the sum of each step's |spindle speed| × duration / 2π; a change of speed inside the run
does not close it); a step of the run still open — the play is on, or stopped — reads the total so
far. 0 for a step whose ratio is known and not above 1 (a no-cut step among them) and for a rapid
step, which is in no run; NaN while the physics ran and the ratio is unknown (no spindle capability,
no limits at the step's speed). Null when the physics did not run on the step (the null record) or
the step was not published by this runner (no host, no runner, no channel row). A run closes with
the first step whose ratio is 1 or below or unknown, a rapid step, a gap in the step order (a step
that faulted) or the closing of the outermost run; a step-physics recompute folds the runs again
from the recomputed ratios. The runs are of the ratios as the play, or the last recompute,
computed them: an edit of the spindle capability reaches MaxSpindleTorqueRatio and
MaxSpindlePowerRatio at once and the runs with the next recompute (the card's rule
for an in-place edit), so until then a step outside every run may read 0 beside a ratio above 1.
The three answers read differently by surface: the step CSV writes an empty cell, NaN and
0; the inspecting slot and a color tree read null as NaN, so a threshold leaf holds for a finite
value alone. Same for SpindleOverloadPeakRatio and YieldingStressOverloadRevolutions.
[Present("Spindle Overload Revolutions", "Spd.Overload-Rev.", PhysicsUnit.None, "G6")]
public double? SpindleOverloadRevolutions { get; }
Property Value
SpindleSpeed_rpm
Gets the spindle speed in RPM.
[Present("Spindle Speed", "S", PhysicsUnit.rpm, "G5")]
[JsAce(ClassExt = "MachiningStep")]
public double SpindleSpeed_rpm { get; }
Property Value
- double
Spindle speed in rad/s
SpindleTemperature_C
Gets the spindle temperature in Celsius. It is stored as the program plays, so after an edit of the spindle capability it keeps the played value until the step physics are recomputed or the program is played again.
[Present("Spindle Temperature", "Spd.Temp.", PhysicsUnit.C, "G2")]
[JsAce(ClassExt = "MachiningStep")]
public double? SpindleTemperature_C { get; }
Property Value
SpindleWorkingTemperatureRatio
Gets the spindle working temperature ratio: the spindle temperature above ambient over the current spindle capability's working range, computed on read; NaN without a spindle capability or without its continuous condition.
[Present("Spindle Working Temperature Ratio", "Spd.Temp.R.", PhysicsUnit.None, "G2")]
[JsAce(ClassExt = "MachiningStep")]
public double? SpindleWorkingTemperatureRatio { get; }
Property Value
StepDuration
Gets the step duration.
[Present("Step Duration", "duration", PhysicsUnit.sec, "ss\\.ffffff")]
[JsAce(ClassExt = "MachiningStep")]
public TimeSpan StepDuration { get; }
Property Value
StepIndex
Gets the index of the step.
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Present("Step Index", "S.I.", PhysicsUnit.None, "G")]
public int StepIndex { get; }
Property Value
SubstractionBrief
The step's removal scalars, inline: whether the cutter touched the stock, the cutting depth, the plural-filtered width, the MRR and the tri-state of the step's force brief (SubstractionBrief). Replaced whole when the step-physics recompute replaces the force brief (ReplaceMillingForceBriefTag(byte)). The two briefs themselves are not on the step: TryGetMillingForceBrief(out MillingForceBrief) and TryGetSeqPhysicsState(out SeqPhysicsState) read them from the step cache.
public SubstractionBrief SubstractionBrief { get; }
Property Value
ThermalStress_MPa
Gets the thermal stress in MPa: the flute temperature under the coating against the current cutter's flute material, computed on read (GetThermalStress_MPa(MillingCutter, double)); 0 on a step whose thermal step did not evaluate it.
[Present("Thermal Stress", "Th. S.", PhysicsUnit.MPa, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ThermalStress_MPa { get; }
Property Value
ThermalYieldRatio
Gets the thermal yield ratio: ThermalStress_MPa over the current cutter's flute material tensile strength, computed on read.
[Present("Thermal Yield Ratio", "Th. Yield R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? ThermalYieldRatio { get; }
Property Value
TipDeflectionsOnToolRunningCoordinate_um
Gets the tip deflections on tool running coordinate in micrometers
[JsAce(ClassExt = "MachiningStep")]
public List<vec3d_t> TipDeflectionsOnToolRunningCoordinate_um { get; }
Property Value
ToolId
Gets the tool ID.
[Present("Tool ID", "T", PhysicsUnit.None, "G", IsCategorical = true, CategoryLabelPrefix = "T")]
[JsAce(ClassExt = "MachiningStep")]
public int ToolId { get; }
Property Value
ToothArcDuration_s
Gets the tooth arc duration in seconds by the spindle rotation. The value is SpindleCyclePeriod_s div Cutter's teeth number.
[Present("Tooth Arc Duration", null, PhysicsUnit.sec, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double ToothArcDuration_s { get; }
Property Value
ToothSeqOnToolRunningCoordinate
Gets the sequence pair of transformation matrices representing tooth positions on the tool running coordinate system.
public SeqPair<mat4d_t> ToothSeqOnToolRunningCoordinate { get; }
Property Value
WorkpieceDermisTemperature_C
Gets the workpiece dermis temperature in Celsius
[Present("Workpiece Dermis Temperature", "W. Dermis T.", PhysicsUnit.C, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? WorkpieceDermisTemperature_C { get; }
Property Value
WorkpiecePlasticDepth_mm
Gets the workpiece plastic depth in millimeters: the depth at which the cutting stress equals the yield strength of the equipment's current workpiece material, computed on read (GetWorkpiecePlasticDepth_mm(WorkpieceMaterial)). Null without a physics brief; NaN without a workpiece material on a step that cuts.
[JsAce(ClassExt = "MachiningStep")]
public double? WorkpiecePlasticDepth_mm { get; }
Property Value
WorkpiecePlasticDepth_um
Gets the workpiece plastic depth in micrometers. The depth is at the location that the cutting stress is equal to the yielding stress. The cutting stress exert to the workpiece decreased on the depth increased.
[Present("Workpiece Plastic Deformation Depth", "W.P.Depth", PhysicsUnit.um, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double WorkpiecePlasticDepth_um { get; }
Property Value
YieldingStressOverloadRevolutions
The spindle revolutions of the run of yielding-stress overload this step is in: the consecutive steps, this one among them, whose YieldingStressRatio is above 1, folded and read as SpindleOverloadRevolutions is (the same fold, its other table). 0 for a step whose ratio is known and not above 1 and for a rapid step; NaN while the physics ran and the ratio is unknown; null when the physics did not run on the step or the step is not held.
[Present("Yielding Stress Overload Revolutions", "Y-Stress-Overload-Rev.", PhysicsUnit.None, "G6")]
public double? YieldingStressOverloadRevolutions { get; }
Property Value
YieldingStressRatio
Gets the yielding stress ratio
[Present("Yielding Stress Ratio", "Y-Stress-R.", PhysicsUnit.None, "G4")]
[JsAce(ClassExt = "MachiningStep")]
public double? YieldingStressRatio { get; }
Property Value
Methods
FillInspectingSlot(int, double)
Internal Use Only. Writes the inspecting slot: the stamp cleared, then the value, then the stamp, so that a reader that sees the stamp before and after the value saw the value of that generation. The host writes it as the step is built, when the step-physics recompute rewrote the step and on every move of its generation.
public void FillInspectingSlot(int generation, double value)
Parameters
generationintThe generation the value was computed under; never 0 (0 is the cleared stamp).
valuedoubleThe value; NaN for no value.
Exceptions
- ArgumentOutOfRangeException
generationis 0.
GetCutterDermisAvgTemperature_C(double)
Gets the average cutter dermis temperature in Celsius at the specified depth.
[JsAce(ClassExt = "MachiningStep")]
public double GetCutterDermisAvgTemperature_C(double depth_mm)
Parameters
depth_mmdoubleThe depth in millimeters
Returns
- double
Average temperature in Celsius
GetCutterDermisTemperature_C(double)
Gets the cutter dermis temperature in Celsius at the specified depth.
[JsAce(ClassExt = "MachiningStep")]
public double GetCutterDermisTemperature_C(double depth_mm)
Parameters
depth_mmdoubleThe depth in millimeters
Returns
- double
Temperature in Celsius
GetFeedrate_mmds()
Gets the program feedrate in millimeters per second.
public double GetFeedrate_mmds()
Returns
- double
Feedrate in mm/s
GetIndexedFileLine()
Gets the file line associated with this object.
public IndexedFileLine GetIndexedFileLine()
Returns
- IndexedFileLine
The file line object.
GetMcValue(IMachiningChain, string)
Gets the MC value for the specified tag in the machining chain.
public double? GetMcValue(IMachiningChain chain, string tag)
Parameters
chainIMachiningChainThe machining chain.
tagstringThe tag to look up.
Returns
- double?
The MC value for the specified tag.
GetMcValue(int)
Gets the MC value at the specified index. For common machine tool, the index 0,1,2,3,4,5 is corresponding to motion component X,Y,Z,A,B,C. If the corresponding motion component not existed, return NaN. If MachineMotionStep not existed, return null.
[JsAce(ClassExt = "MachiningStep")]
public double? GetMcValue(int index)
Parameters
indexintThe index to look up.
Returns
- double?
The MC value at the specified index.
GetSentence()
Returns the source Sentence carried by this object.
public Sentence GetSentence()
Returns
GetSpindleDirection()
Gets the spindle direction for this milling step.
[Present("Spindle Direction", "Spd.Dir.", PhysicsUnit.None, "G")]
[JsAce(ClassExt = "MachiningStep")]
public SpindleDirection GetSpindleDirection()
Returns
GetSpindleSpeed_cycleds()
Gets the spindle speed in cycles per second.
public double GetSpindleSpeed_cycleds()
Returns
- double
The spindle speed in cycles per second.
GetSpindleSpeed_radds()
Gets the spindle speed in radians per second.
public double GetSpindleSpeed_radds()
Returns
- double
Spindle speed in rad/s
PinBriefs(int, MillingForceBrief, SeqPhysicsState)
Internal Use Only. Pins one step's two briefs on the calling thread: until the
returned pin is disposed, TryGetMillingForceBrief(out MillingForceBrief) and
TryGetSeqPhysicsState(out SeqPhysicsState) of the step with stepIndex
answer these briefs on this thread, ahead of the creation cache and the host's store
read — for a reader that holds the briefs already (a segment of rows read at once,
the briefs a recompute just committed) and reads the step's physics getters, which
would otherwise read the store once a getter. Pins nest; other threads never see one.
public static StepBriefPin PinBriefs(int stepIndex, MillingForceBrief millingForceBrief, SeqPhysicsState seqPhysicsState)
Parameters
stepIndexintThe step the briefs belong to.
millingForceBriefMillingForceBriefThe force brief; null for the null record (the physics did not run).
seqPhysicsStateSeqPhysicsStateThe sequential physics state.
Returns
- StepBriefPin
The pin to dispose.
PinBriefs(int, MillingForceBrief, SeqPhysicsState, IReadOnlyDictionary<string, object>)
Internal Use Only. Pins one step's two briefs and the values written onto it on the
calling thread (PinBriefs(int, MillingForceBrief, SeqPhysicsState),
PinWrittenValues(int, IReadOnlyDictionary<string, object>)): a reader with a segment of StepBrief rows and a
segment of StepVariable rows in hand (the inspecting-slot scan, the step-file
export) reads the step's getters and its indexer without a store read.
public static StepBriefPin PinBriefs(int stepIndex, MillingForceBrief millingForceBrief, SeqPhysicsState seqPhysicsState, IReadOnlyDictionary<string, object> writtenValues)
Parameters
stepIndexintThe step the reads belong to.
millingForceBriefMillingForceBriefThe force brief; null for the null record (the physics did not run).
seqPhysicsStateSeqPhysicsStateThe sequential physics state.
writtenValuesIReadOnlyDictionary<string, object>The values written onto the step, every key the step has a row under (an empty dictionary for a step without a row); null leaves the written values unpinned.
Returns
- StepBriefPin
The pin to dispose.
PinWrittenValues(int, IReadOnlyDictionary<string, object>)
Internal Use Only. Pins the values written onto one step on the calling thread, the
briefs left as they are read without a pin: until the returned pin is disposed, the
indexer of the step with stepIndex answers these values on this
thread, ahead of the step's consignment, the last published step's values and the
host's store read; a key absent from writtenValues reads null.
Null pins nothing, and the returned pin still puts the previous one back.
public static StepBriefPin PinWrittenValues(int stepIndex, IReadOnlyDictionary<string, object> writtenValues)
Parameters
stepIndexintThe step the values belong to.
writtenValuesIReadOnlyDictionary<string, object>The values written onto the step, every key the step has a row under; null pins nothing.
Returns
- StepBriefPin
The pin to dispose.
TryGetInspectingValue(int, out double)
Reads the step's inspecting slot: the value of the host's inspecting key as the host
last wrote it under generation.
public bool TryGetInspectingValue(int generation, out double value)
Parameters
generationintThe host's current slot generation (never 0); a slot written under another one is stale (the key, the mapping, the step registry or the physics packs changed since) and answers false.
valuedoubleThe value; NaN is a value too (the key has no value on this step).
Returns
- bool
true when the slot holds a value of this generation.
TryGetLayerMillingEngagement(out LayerMillingEngagement)
Reads the step's engagement, from the creation cache or the step cache.
[JsAce(ClassExt = "MachiningStep", Snippet = "TryGetLayerMillingEngagement(out var $1engagement)")]
public bool TryGetLayerMillingEngagement(out LayerMillingEngagement engagement)
Parameters
engagementLayerMillingEngagementThe engagement, null when the step produced none (physics off, no tool, a cutter without flutes, the spindle not turning).
Returns
- bool
true when the step's luggage is held, in memory or in the store.
TryGetMillingForceBrief(out MillingForceBrief)
Reads the step's force brief, from a pin the calling thread holds, the creation cache or the step cache.
[JsAce(ClassExt = "MachiningStep", Snippet = "TryGetMillingForceBrief(out var $1brief)")]
public bool TryGetMillingForceBrief(out MillingForceBrief brief)
Parameters
briefMillingForceBriefThe force brief; null when the physics did not run on the step (
EnablePhysicsoff, no tool, a cutter without flutes, the spindle not turning).
Returns
- bool
true when the step's briefs are held, in hand, in memory or in the store.
TryGetMillingForceLuggage(out MillingForceLuggage)
Reads the step's per-rotation force arrays, from the creation cache or the step cache.
[JsAce(ClassExt = "MachiningStep", Snippet = "TryGetMillingForceLuggage(out var $1luggage)")]
public bool TryGetMillingForceLuggage(out MillingForceLuggage luggage)
Parameters
luggageMillingForceLuggageThe force luggage, null when the step produced none (physics off, no tool, a cutter without flutes, the spindle not turning, or a touching step the force kernel declined, such as one without cutting parameters).
Returns
- bool
true when the step's luggage is held, in memory or in the store.
TryGetRgbWithPriority(out vec3d_t, out double)
Gets the RGB color and priority for the milling step.
public bool TryGetRgbWithPriority(out vec3d_t rgb, out double priority)
Parameters
Returns
- bool
True when the selected colour guide has a colour for this step, or no guide is selected (the no-value green then); false when the selected guide has none.
TryGetSeqPhysicsBrief(out SeqPhysicsState)
Former name of TryGetSeqPhysicsState(out SeqPhysicsState), kept so scripts written against it
still compile (the type was SeqPhysicsBrief until 2026-10-27).
[Obsolete("Renamed to TryGetSeqPhysicsState.")]
public bool TryGetSeqPhysicsBrief(out SeqPhysicsState brief)
Parameters
briefSeqPhysicsStateThe sequential physics state; every published step has one.
Returns
- bool
true when the step's briefs are held, in hand, in memory or in the store.
TryGetSeqPhysicsState(out SeqPhysicsState)
Reads the step's sequential physics state, from a pin the calling thread holds, the creation cache or the step cache.
[JsAce(ClassExt = "MachiningStep", Snippet = "TryGetSeqPhysicsState(out var $1brief)")]
public bool TryGetSeqPhysicsState(out SeqPhysicsState brief)
Parameters
briefSeqPhysicsStateThe sequential physics state; every published step has one.
Returns
- bool
true when the step's briefs are held, in hand, in memory or in the store.
TryGetSubstraction(out Substraction)
Reads the step's removal geometry, from the creation cache or the step cache.
[JsAce(ClassExt = "MachiningStep", Snippet = "TryGetSubstraction(out var $1substraction)")]
public bool TryGetSubstraction(out Substraction substraction)
Parameters
substractionSubstractionThe substraction, null when the step produced none.
Returns
- bool
true when the step's luggage is held, in memory or in the store.
UpdateNcOptOption(Action<NcOptOption>)
Update NcOptOption for this step only. It should not be mixed with the StepBuilt event and NC inline optimization script since the concurent process may break the logics.
public void UpdateNcOptOption(Action<NcOptOption> action)
Parameters
actionAction<NcOptOption>the action to modify the step.